Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Рушится форма - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Рушится форма
Alex Дата: Среда, 22.01.2014, 10:33 | Сообщение № 1
Группа: Гости
Из за чего может рушится форма. Которая однажды показывается в 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
Дата добавления - 22.01.2014 в 10:33
wild_pig Дата: Среда, 22.01.2014, 14:58 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 518
Репутация: 97 ±
Замечаний: 0% ±

2003, 2013
Может надо было файл с формой выложить, а не "CommandButton1_Click"?
 
Ответить
СообщениеМожет надо было файл с формой выложить, а не "CommandButton1_Click"?

Автор - wild_pig
Дата добавления - 22.01.2014 в 14:58
alex77755 Дата: Четверг, 23.01.2014, 03:32 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

Чтоо делает процедура:
[vba]
Код
ThisWorkbook.ttt
[/vba]


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
СообщениеЧтоо делает процедура:
[vba]
Код
ThisWorkbook.ttt
[/vba]

Автор - alex77755
Дата добавления - 23.01.2014 в 03:32
Alex Дата: Четверг, 23.01.2014, 21:57 | Сообщение № 4
Группа: Гости
[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
Дата добавления - 23.01.2014 в 21:57
alex77755 Дата: Четверг, 23.01.2014, 22:33 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

Что делает процедура:

[vba]
Код
ThisWorkbook.ttt
[/vba]


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
СообщениеЧто делает процедура:

[vba]
Код
ThisWorkbook.ttt
[/vba]

Автор - alex77755
Дата добавления - 23.01.2014 в 22:33
alex77755 Дата: Четверг, 23.01.2014, 22:34 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

Ты выложил код процедур:
[vba]
Код
Private Sub bbOpenCreare_Click()
Public Sub OpenOrCreateRep(ByVal DtRep As Date)
[/vba]


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
СообщениеТы выложил код процедур:
[vba]
Код
Private Sub bbOpenCreare_Click()
Public Sub OpenOrCreateRep(ByVal DtRep As Date)
[/vba]

Автор - alex77755
Дата добавления - 23.01.2014 в 22:34
Alex Дата: Пятница, 24.01.2014, 21:25 | Сообщение № 7
Группа: Гости
[quote=alex77755]Что делает процедура:
ThisWorkbook.ttt[/quote]

процедура ttt - это OpenOrCreateRep

т.е. она (OpenOrCreateRep) вызывается по нажатию кнопки. Параметром в нее передается значение DTPic - это компонент-календарь на форме. Той самой форме.

И вот после ее (OpenOrCreateRep) выполнения показывается сообщение msgbox, после закрытия которого пропадает и сама форма.
 
Ответить
Сообщение[quote=alex77755]Что делает процедура:
ThisWorkbook.ttt[/quote]

процедура ttt - это OpenOrCreateRep

т.е. она (OpenOrCreateRep) вызывается по нажатию кнопки. Параметром в нее передается значение DTPic - это компонент-календарь на форме. Той самой форме.

И вот после ее (OpenOrCreateRep) выполнения показывается сообщение msgbox, после закрытия которого пропадает и сама форма.

Автор - Alex
Дата добавления - 24.01.2014 в 21:25
alex77755 Дата: Суббота, 25.01.2014, 17:45 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

Гадать больше не буду


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
СообщениеГадать больше не буду

Автор - alex77755
Дата добавления - 25.01.2014 в 17:45
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!