#excel #vba
Вопрос:
Прошло некоторое время с тех пор, как я создал форму пользователя в Excel, так что простите меня, если это что-то очевидное. У меня есть форма пользователя, содержащая несколько комбинаций. При открытии книги я заполняю их все списком отчетов, хранящихся в SQL, используя макрос Workbook_Open.
Однако, когда я закрываю форму пользователя, а затем снова открываю ее, выпадающие списки пусты. Я так понимаю, как работают пользовательские формы? Нужно ли заполнять эти поля каждый раз при запуске формы пользователя? Я рад это сделать, но просто хотел проверить, не пропущен ли параметр или простая строка кода.
Спасибо
Комментарии:
1. Это потому, что данные хранятся в памяти вместе с формой, поэтому, когда вы ее закрываете, эти данные теряются. Просто переместите тот же код в
Private Sub UserForm_Initialize()
форму вместо этого, чтобы при открытии формы данные были извлечены снова. В качестве альтернативы сохраните данные на рабочем листе или в общедоступной переменной и заполните оттуда выпадающие списки2. Спасибо Абсенту, в этом есть смысл
3. Данные также останутся, если вы не уничтожите форму (не используете
unload
). Вместо этого просто спрячьте его (hide
).