我需要一些专业知识帮助!
我对 VBA 或 Excel 并不陌生,但我遇到过这个奇怪的事情,我找不到解决方法。我已经谷歌搜索了很长时间,所以我想我应该在这里问。
背景: 我有一个 Excel 工作表,其中包含我正在为工作开发的大量 VBA,其中一个 ActiveX 组合框在启动时填充了来自 Access 数据库的项目。用户可以选择一个项目,该项目会自动(在失去焦点/更改时)使用数据库中的数据填充一些文本框。然后用户可以编辑从数据库加载的文本框值,从而调整一些计算结果。
现在的问题是:如果用户调整参数,但想要返回到默认值 - 即重新加载数据库值 - 再次选择相同的组合框条目不会触发我发现的任何事件 - 因为它已经已选择。我认为点击事件应该触发 - 但没有。更改事件显然不会触发...
有什么办法可以解决这个问题吗?有什么我没想到的事情吗?
注意:当前的解决方案是用户必须选择另一项,然后返回到他或她想要的项,或者添加重置按钮。我不喜欢这两种解决方法,所以如果有什么我能做的......
谢谢!
我几天来一直在研究一个与您所说的问题完全相同的问题,并且可能有理想的解决方案。
这个想法是将“ComboBox1.Value”重置为默认值,以便您可以重新选择相同的选项。这样就不需要单击随机项目,然后重新选择前一个项目来重新填充链接的单元格,并且不需要单独的重置按钮。
Code:
Sub cbReset()
'Reset ComboBox1 Values
Sheets("Sheet1").ComboBox1.Value = "Select Option..." <-- 'Default value of Combo Box
Sheets("Sheet1").ComboBox2.Value = "Select Option..." <-- 'Default value of Combo Box
Sheets("Sheet2").ComboBox1.Value = "Select Option..." <-- 'Default value of Combo Box
End Sub
您可以根据自己的需要调整代码。这可以在同一工作表中调用或输入。 在执行完其他所有内容后,此代码将出现在语句末尾。 我输入了额外的行以在多个工作表或组合框中使用,以防万一有需要。
您还可以更改工作表名称或组合框名称。
希望现在提供帮助还为时不晚。
干杯!
虽然晚了9年,但也许会对某人有所帮助...... 我也遇到了同样的问题,但发现 MouseDown 事件在 Click 事件之前触发,因此在 MouseDown 事件代码中我取消选择组合框中的条目,然后 Click 事件触发,运行我的代码。 对于用户来说,它发生得如此之快,以至于无论出于何种意图和目的,它都在重新单击组合框中的同一条目。 如果我的逻辑有错误,请客客气气 - 我是一个 63 岁的人,正在玩 VBA 代码!