excel - Excel VBA ComboBox DropButtonClick() 事件触发两次
问题描述
我有一个精心设计的仪表板,它使用了多个用户表单和每个用户表单中的许多控件。我遇到的具体问题涉及ComboBox_DropButtonClick()
似乎正在触发两次的事件。组合框目前有两个事件,一个是DropButtonClick()
我通过数组填充组合框列表的事件,另一个是一个ComboBox_Change()
事件。我发现并试图阻止的是,当我单击下拉按钮时,DropButtonClick()
事件会按预期触发。当列表出现在用户窗体上时,我进行了选择。在我单击其中一项后,该ComboBox_Change()
事件将触发 - 也如预期的那样。但是,当ComboBox_Change()
事件结束时,ComboBox_DropButtonClick()
事件会触发一次额外的时间,大概是在它关闭时?我宁愿第二个DropButtonClick()
不触发,因为它会额外运行该代码。
我没有提供详细的仪表板代码并确认我的发现,而是创建了第二个全新的工作簿来演示该问题。我创建了一个带有单个组合框的用户表单。我创建了相同的两个事件:DropButtonClick()
和Change()
. 然后我编写了一段类似的代码来从数组中填充组合框列表,然后将组合框值打印到空白工作表上的任意单元格中。我在事件中使用了一个断点DropButtonClick()
来帮助逐步完成序列并确认事件正在触发,如上所述。
Private Sub ComboBox1_Change()
Thisworkbook.worksheets(1).Range("A5") = Me.ComboBox1.Value
end sub
Private Sub ComboBox1_DropButtonClick()
dim arr as variant
dim I as integer
for I = 0 to 5
if IsEmpty(arr) then
redim arr(0)
else
redim preserve arr(ubound(arr)+1)
end if
arr(ubound(arr)) = "A" & I
next I
Me.ComboBox1.List = arr
end sub
我希望该DropButtonClick()
事件会触发,这将向我显示可供选择的元素数组。然后,我从选项中进行选择,该选项应该触发Change()
事件并打印到工作表。查看。这一切都会发生。然后由于某种原因,在那之后,DropButtonClick()
事件在所有执行完成之前再触发一次。试图理解为什么DropButtonClick()
事件会发生两次,以及我如何避免第二次事件而不必嵌入一个公共布尔变量,如果true
(例如)立即退出
解决方案
推荐阅读
- string - C#8 nullable : string.IsNullOrEmpty 不被编译器理解为有助于防止 null
- rust - 为什么我会得到“在当前范围内没有为类型 `[usize]` 找到名为 `join` 的方法”?
- angular - 哪种方式最适合延迟加载角材料模块?
- java - OpenJDK 1.8 文件系统使用率高 CPU 使用率
- java - 当我在 `layout.xml` 文件中添加工具栏时,Android Studio RecyclerView 不会显示我的数据
- javascript - Axios 获得不同的 X-CSRF 令牌,然后是 Postman
- azure-active-directory - 通过图表添加的用户未收到欢迎电子邮件
- python-3.x - CNN 加载模型不适用于测试数据集
- python - 我收到 PermissionError: [Errno 13] Permission denied: when move a file using shutil.move 有没有办法忽略这个错误?
- android - 使用 android gradle 插件 3.6+ 执行 crashlyticsGenerateSymbols 任务时出错