【发布时间】:2016-08-02 14:10:55
【问题描述】:
在此处使用 Excel 2010。从一张空白表开始,我创建了一个 ActiveX 组合框。
1) 打开属性窗口并设置:
ListFillRange = "A1:A3"
2) 分别用单词“one”、“two”和“three”手动填充范围 A1:A3 中的每个单元格(这些字符串是任意的)。
3) 单击组合框下拉箭头以检查值是否出现在列表中。
4) 启用设计模式并双击组合框打开VBA编辑器,然后粘贴以下代码(假设组合框名称为“ComboBox1”):
Private Sub ComboBox1_change()
MsgBox "Change event"
End Sub
Private Sub ComboBox1_click()
MsgBox "Click event"
End Sub
5) 返回包含组合框的工作表并禁用设计模式。
6) 单击组合框下拉按钮并从列表中选择顶部项目(“一个”)。释放鼠标按钮后,您应该立即获得两个 MsgBox 窗口,一个用于 _click 事件,另一个用于 _change 事件,如上述 Subs 所示。
7) 仍然选择“one”,双击 ListFillRange 中的任何单元格(例如,单元格“A2”)
结果:第 7 步触发了 _click 和 _change 事件!每当编辑 ListFillRange 范围中的值并且组合框中的字符串与 ListFillRange 中的至少一个值完全匹配时,就会发生这种情况。
知道为什么会这样吗?它是一个错误吗?提前致谢!
【问题讨论】: