Из за чего может рушится форма. Которая однажды показывается в Workbook_Open() UserForm1.Show False Явных методов ее закрытия/прятания нет. В момент пропажи не вызываются ее методы UserForm_Error и UserForm_Terminate() Я просто для, как бы отладки, в эти методы добавил msgbox c названием метода. Так же в ее методе UserForm_QueryClose делаю Cancel = True - что бы ее нельзя было закрыть.
Изначально форма не пропадала. Но в какой-то момент стала пропадать после нажатия на кнопку на этой форме. Сразу я не обратил на это внимания, а после было много изменений и соответственно не могу определить где произошел этот глюк. На нажатие кнопки вызывается процедура из ThisWorkbook. Сама процедура отрабатывается без ошибок. Ставил msgbox в разные места по выполнению кода от начала нажатия до, буквально: [vba]
Код
Private Sub CommandButton1_Click() ThisWorkbook.ttt
MsgBox "Click"
End Sub
[/vba]
Показывается сообщение, и после нажатия в нем ОК форма закрывается сразу после закрытия сообщения.
Не пойму, куда она пропадает? Если вызвать ее по F5 из VBA то снова вызываются ее методы UserForm_Initialize() и UserForm_Activate()
Из за чего может рушится форма. Которая однажды показывается в Workbook_Open() UserForm1.Show False Явных методов ее закрытия/прятания нет. В момент пропажи не вызываются ее методы UserForm_Error и UserForm_Terminate() Я просто для, как бы отладки, в эти методы добавил msgbox c названием метода. Так же в ее методе UserForm_QueryClose делаю Cancel = True - что бы ее нельзя было закрыть.
Изначально форма не пропадала. Но в какой-то момент стала пропадать после нажатия на кнопку на этой форме. Сразу я не обратил на это внимания, а после было много изменений и соответственно не могу определить где произошел этот глюк. На нажатие кнопки вызывается процедура из ThisWorkbook. Сама процедура отрабатывается без ошибок. Ставил msgbox в разные места по выполнению кода от начала нажатия до, буквально: [vba]
Код
Private Sub CommandButton1_Click() ThisWorkbook.ttt
MsgBox "Click"
End Sub
[/vba]
Показывается сообщение, и после нажатия в нем ОК форма закрывается сразу после закрытия сообщения.
Не пойму, куда она пропадает? Если вызвать ее по F5 из VBA то снова вызываются ее методы UserForm_Initialize() и UserForm_Activate()Alex
[quote=alex77755]Чтоо делает процедура: ThisWorkbook.ttt[/quote]
[vba][code]Private Sub bbOpenCreare_Click() ThisWorkbook.OpenOrCreateRep (DTPic.Value) MsgBox "Click" End Sub
Public Sub OpenOrCreateRep(ByVal DtRep As Date) Dim FlRep, DirRep As String
NormalizeDateReport (DtRep) DirRep = PathRep & "\" & YearStr If Not DirExists(DirRep$) Then GoTo CreateRep FlRep = DirRep & "\" & MonthStr & ".xlsx" If Not FileExists(FlRep) Then GoTo CreateRep
If Not MoveListRep(FlRep, DayStr) Then GoTo CreateRep NeededUpdateList = True Exit Sub CreateRep: If SheetExists(ThisWorkbook, DateStrD) Then Exit Sub TemplateList.Visible = xlSheetHidden TemplateList.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) TemplateList.Visible = xlSheetVeryHidden ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Visible = xlSheetVisible ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).CodeName).Name = "Day" & DayStr & "List" ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name = DateStrD NeededUpdateList = True ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Activate ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Protect Password:=PassRep, UserInterfaceOnly:=True ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Cells(1, 1).Value = TitleRep & Chr(10) & DateStr ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Cells(3, 1).Value = "Ñîçäàí: " & Now ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Cells(1, 7).Font.Color = RGB(0, 255, 0) ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Cells(1, 7).Value = DtRep 'MsgBox "Create Rep" End Sub[/code][/vba]
Сообщение "Click" появляется и после его закрытия закрывалась форма.
Но сейчас вроде перестала закрываться, не уверен, немного не тем сейчас занимаюсь в коде и особо внимания на нее не обращаю, к сожалению...( Понимаю, что сейчас будут вопросы по остальным процедурам и функциям или нужен файл, но я хотел получить общие ответы из-за чего может так происходить с формой. Ведь ошибок не возникает и форма живет до последнего... Я до этого писал немного на паскале (Делфи), но там немного по другому ведет себя компилятор.
[quote=alex77755]Чтоо делает процедура: ThisWorkbook.ttt[/quote]
[vba][code]Private Sub bbOpenCreare_Click() ThisWorkbook.OpenOrCreateRep (DTPic.Value) MsgBox "Click" End Sub
Public Sub OpenOrCreateRep(ByVal DtRep As Date) Dim FlRep, DirRep As String
NormalizeDateReport (DtRep) DirRep = PathRep & "\" & YearStr If Not DirExists(DirRep$) Then GoTo CreateRep FlRep = DirRep & "\" & MonthStr & ".xlsx" If Not FileExists(FlRep) Then GoTo CreateRep
If Not MoveListRep(FlRep, DayStr) Then GoTo CreateRep NeededUpdateList = True Exit Sub CreateRep: If SheetExists(ThisWorkbook, DateStrD) Then Exit Sub TemplateList.Visible = xlSheetHidden TemplateList.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) TemplateList.Visible = xlSheetVeryHidden ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Visible = xlSheetVisible ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).CodeName).Name = "Day" & DayStr & "List" ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name = DateStrD NeededUpdateList = True ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Activate ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Protect Password:=PassRep, UserInterfaceOnly:=True ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Cells(1, 1).Value = TitleRep & Chr(10) & DateStr ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Cells(3, 1).Value = "Ñîçäàí: " & Now ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Cells(1, 7).Font.Color = RGB(0, 255, 0) ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Cells(1, 7).Value = DtRep 'MsgBox "Create Rep" End Sub[/code][/vba]
Сообщение "Click" появляется и после его закрытия закрывалась форма.
Но сейчас вроде перестала закрываться, не уверен, немного не тем сейчас занимаюсь в коде и особо внимания на нее не обращаю, к сожалению...( Понимаю, что сейчас будут вопросы по остальным процедурам и функциям или нужен файл, но я хотел получить общие ответы из-за чего может так происходить с формой. Ведь ошибок не возникает и форма живет до последнего... Я до этого писал немного на паскале (Делфи), но там немного по другому ведет себя компилятор.Alex
[quote=alex77755]Что делает процедура: ThisWorkbook.ttt[/quote]
процедура ttt - это OpenOrCreateRep
т.е. она (OpenOrCreateRep) вызывается по нажатию кнопки. Параметром в нее передается значение DTPic - это компонент-календарь на форме. Той самой форме.
И вот после ее (OpenOrCreateRep) выполнения показывается сообщение msgbox, после закрытия которого пропадает и сама форма.
[quote=alex77755]Что делает процедура: ThisWorkbook.ttt[/quote]
процедура ttt - это OpenOrCreateRep
т.е. она (OpenOrCreateRep) вызывается по нажатию кнопки. Параметром в нее передается значение DTPic - это компонент-календарь на форме. Той самой форме.
И вот после ее (OpenOrCreateRep) выполнения показывается сообщение msgbox, после закрытия которого пропадает и сама форма.Alex