【问题标题】:VBA Listbox becomes unresponsive after first useVBA Listbox 首次使用后无响应
【发布时间】:2023-03-30 01:05:01
【问题描述】:

我有一个 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)
  • 当第二个表单处理退出点击时,代码如下所示:

' frmForm2 代码模块的一部分

sub cmdExit_Click

me.hide

end sub

第一次它工作正常 - 但是当我返回 frmForm1(在 lstListBox_Click 过程的尾部)时,即使表单的其余部分是可操作的,列表框仍然顽固地没有响应。

如果有帮助的话,我已经设法将其抽象为一个小演示系统 - 在那里可以看到相同的行为。 (它是常规的 .xls 文件,但作为上传文件似乎不太容易接受)

有人见过吗?有没有人知道如何让它按照我想要的方式工作?

谢谢,

托尼

【问题讨论】:

  • 我以前没见过,但是如果你钩入_Change事件,它会做同样的事情吗?

标签: vba listbox


【解决方案1】:

.Show 方法的默认设置是形成modal 的形式。将其显式设置为无模式:

Sub lstListbox_Click
...
Me.Show vbModeless

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多