Диалоговое окно формы пользователя VBA не заполняется при открытии

#excel #vba

Вопрос:

Прошло некоторое время с тех пор, как я создал форму пользователя в Excel, так что простите меня, если это что-то очевидное. У меня есть форма пользователя, содержащая несколько комбинаций. При открытии книги я заполняю их все списком отчетов, хранящихся в SQL, используя макрос Workbook_Open.

Однако, когда я закрываю форму пользователя, а затем снова открываю ее, выпадающие списки пусты. Я так понимаю, как работают пользовательские формы? Нужно ли заполнять эти поля каждый раз при запуске формы пользователя? Я рад это сделать, но просто хотел проверить, не пропущен ли параметр или простая строка кода.

Спасибо

Комментарии:

1. Это потому, что данные хранятся в памяти вместе с формой, поэтому, когда вы ее закрываете, эти данные теряются. Просто переместите тот же код в Private Sub UserForm_Initialize() форму вместо этого, чтобы при открытии формы данные были извлечены снова. В качестве альтернативы сохраните данные на рабочем листе или в общедоступной переменной и заполните оттуда выпадающие списки

2. Спасибо Абсенту, в этом есть смысл

3. Данные также останутся, если вы не уничтожите форму (не используете unload ). Вместо этого просто спрячьте его ( hide ).