当它们的 ListFillRange 引用基于公式的命名范围(定义名称)时,Excel 中的 ActiveX 组合框对象表现不佳。
我想我遇到了其他错误,甚至可能因此导致 Excel 崩溃,但现在发生的只是在工作簿中的任何单元格发生更改时都会触发 combobox_change() 事件。
我不确定这是否真的是一个错误,或者是否有修复或解决方法。如果它是一个错误,我如何将其报告给 Excel 人员?
最后,我问题的真正重点是“我如何最好地解决这个问题?” 我想要一些基于公式的命名范围,但这似乎是不可能的。
要重现此错误,请执行以下操作:
同样,这是否正常,我正在做的事情的最佳选择是什么?这个组合框链接到各种单元格,应该是默认情况下excel提供的数据验证下拉列表中小字体的替代品。
到目前为止,我知道有一些可用的选择。我能想到的最好的办法是:
避免直接使用基于公式的命名范围。相反,定义一个子例程来检查是否应更改定义的范围“demoRange”的当前值。在 workbook_open 和sheet3_deactivate 事件上运行此子例程。如果需要,提示用户询问是否可以更新命名范围。[编辑] 更新“demoRange”的宏可能只是从“demoRange_FormulaBased”命名范围复制到静态的“demoRange”。[/编辑]
该解决方案效果很好,因为您可以继续使用 linkedcell 属性,不必使用 VBA 来填充组合框,并且命名范围仍然可以用于它已有的任何其他用途。避免使用 onchange 事件来运行这个新的子例程,因为如果用户打开“查找/替换”对话框并选择“全部替换”,它最终可能会被触发数千次。
| 归档时间: |
|
| 查看次数: |
22919 次 |
| 最近记录: |