Страницы: 1
RSS
При появлении программно созданой формы не срабатывает UserForm_Initialize
 
Доброго времени суток!
Программно создаю форму с контролами и свойствами. Но при появлении формы, код UserForm_Initialize не срабатывает. Может кто знает в чем причина?
Заранее всем спасибо!
 
Всё срабатывает
Напишите так, - и сразу это увидите:
Код
    'Код при появлении формы
    myForm.codemodule.insertlines 1, "Private Sub UserForm_Initialize()"
    myForm.codemodule.insertlines 2, "msgbox 1" ' вы увидите это сообщение при отображении формы
    myForm.codemodule.insertlines 3, "End Sub"

PS: Вообще, вы перемудрили с кодом (если вы для работы что-то делаете, а не изучаете таким образом возможности VBA программирования)
Программное создание всего этого - куча сложностей, абсолютно ненужных при решении 99.9% задач
Все эти формы и контролы создаются один раз вручную, вручную прописывается код, - а потом это все запускается как обычно. И все работает.
Изменено: Игорь - 12.11.2016 05:12:21
 
Цитата
Всё срабатывает
?!  
У меня при появлении формы, в комбобоксе абсолютно пусто. Но если форму не удалять, то при повторном её запуске (не через код прописанный в модуле) в комбобоксе данные появляются.
Цитата
Вообще, вы перемудрили с кодом (если вы для работы что-то делаете, а не изучаете таким образом возможности VBA программирования)
Пока только изучаю данную возможность. Ведь для того чтоб применить, нужно знать что именно. ))
Изменено: Ronin751 - 12.11.2016 07:16:59
 
Странно. Но если заполнять комбобокс так:
Код
myForm.codemodule.insertlines 1, "Private Sub UserForm_Initialize()"
    myForm.codemodule.insertlines 2, "Me.CB1.List = Array(""1"",""2"",""3"")"
    myForm.codemodule.insertlines 3, "End Sub"
всё работает корректно и данные в комбобоксе видны и доступны . А при Recordset, комбобокс остается пустым.  :qstn: :excl:
 
Игорь правильно советует: при программном создании контролов (форм) потом устанете преодолевать трудности, которые САМИ себе и создаёте ))
 
Юрий, Игорь! Спасибо, что обратили внимание на тему!
Цитата
потом устанете преодолевать трудности, которые САМИ себе и создаёте
Я абсолютно согласен с Вами. Прошерстил и-нэт по данной теме и почти всюду вывод такой же: "Оно того не стоит!" Но для самообразования, почему бы и нет.
Тут сама суть проблемы, почему не отображаются данные из Recordset? Всё же вроде бы правильно и должно работать?!  
 
Ronin751, а Вы код обращения к базе данных напрямую пробовали прогнать? У меня на строке
Код
FConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sPath & ";"
выдал ошибку:
Цитата
Run-time error '-2147217843 (80040e4d)':
Не выполнена проверка подлинности.
 
Skif-F, здравствуйте! У меня ошибки нет. У Вас наверное офис 2007 и выше. Поменяйте 4 на 12.  
 
Здравствуйте.
Прошу прощения. 4 и 12 - не имеет значения. Ошибку нашёл у себя - при переносе и удалении кавычек строчкой выше sPath превратилась в msPath. В остальном работает!
 
Skif-F! Прошу меня простить, но хотел бы уточнить. У Вас при появлении формы в комбобоксе отображаются данные из СУБД Аксес?
 
Конечно нет. Если бы отображались, не стал бы проверять "напрямую"
 
Вот и у меня ничего не видно. А почему не пойму. (((
Спасибо!
 
Ronin751,
попробуйте вызывать форму из другой процедуры
Код
    'Вывод формы на экран
    VBA.UserForms.add (myForm.Name)
    Call run_uf1
End Sub

Sub run_uf1()
UserForm1.Show
End Sub
 
Jungl! Спасибо!
Как оказалось всё так просто решалось. Прям стыдно, что сам не додумался. :oops:
 
Цитата
Jungl написал: попробуйте вызывать форму из другой процедуры
Хуже!
Замените строку:
Код
myForm.codemodule.insertlines 7, "pFilter.Open sSQL, FConn: UserForm1.CB1.Column = pFilter.GetRows"
на
Код
myForm.codemodule.insertlines 7, "pFilter.Open sSQL, FConn: Me.CB1.Column = pFilter.GetRows"
 
Цитата
Замените строку:
:oops: :oops:  М-м-да!
Теперь у меня и слов нет. Проще уж наверно и некуда. Спасибо большое!
 
А у кого они (слова) есть? Вроде бы разжевали Бейсику всё до последнего: "Взять из модуля UserForm1 объект CB1..." Ан, нет! Тоже не нравится!
 
Цитата
Тоже не нравится!
Видимо вредный уж очень. )) Спасибо всем за помощь! Теперь хоть спать спокойно буду.
Страницы: 1
Наверх