VBA Listbox перестает отвечать на запросы после первого использования - PullRequest
2 голосов
/ 21 января 2012

У меня есть система VBA (Excel 2010), которая включает в себя выбор элемента из списка и его отображение в другой форме. Вот очень упрощенная версия того, что происходит.

' Part of frmForm1 code module
sub lstListbox_Click

dim MyEvent as string
dim i as integer

i=me.lstListbox.listindex
MyEvent=me.lstlistbox.list(i)

'  Now show the item in the second form

Load frmForm2
me.hide
ThisWorkbook.LoadDataIntoForm2 (frmForm2, MyEvent)
frmForm2.show

unload frmForm2
me.show

end sub

Окно списка принимает щелчок и сначала событие (выше указывается обработчик события). Ключевые части обработчика событий:

  • Загрузить вторую форму (для отображения подробных данных)
  • Передать вторую форму в качестве параметра UserForm процедуре (LoadDataIntoForm2)
  • Скрыть форму хоста (frmForm1) и показать вторую форму (frmForm2)
  • Когда вторая форма обрабатывает щелчок Exit, код выглядит следующим образом:

'Часть модуля кода frmForm2

sub cmdExit_Click

me.hide

end sub

Первый раз вокруг него работает отлично - но когда я вернусь в frmForm1 (в хвостовом конце процедуры lstListBox_Click), даже если остальная часть формы действует, то ListBox остается упорно не отвечает

.

Мне удалось абстрагироваться до небольшой демонстрационной системы, если это помогло бы - то же самое поведение наблюдается там. (Это обычный файл .xls, но его, похоже, нелегко принять как загрузку)

Кто-нибудь видел это раньше? И у кого-нибудь есть идеи, как заставить это работать так, как я хочу?

Спасибо

Тони

1 Ответ

1 голос
/ 24 января 2012

По умолчанию для метода .Show используется форма модальная . Явно установите его в немодальное:

Sub lstListbox_Click
...
Me.Show vbModeless

End Sub
...