当它们的 ListFillRange 引用基于公式的命名范围(定义名称)时,Excel 中的 ActiveX 组合框对象表现不佳。
我想我遇到了其他错误,甚至可能因此导致 Excel 崩溃,但现在发生的只是在工作簿中的任何单元格发生更改时都会触发 combobox_change() 事件。
我不确定这是否真的是一个错误,或者是否有修复或解决方法。如果它是一个错误,我如何将其报告给 Excel 人员?
最后,我问题的真正重点是“我如何最好地解决这个问题?” 我想要一些基于公式的命名范围,但这似乎是不可能的。
要重现此错误,请执行以下操作:
- 创建一个新的工作簿。在 Sheet3 上,创建一个小表,宽 3 列,高几行。
- 使用以下公式(或等效公式)创建命名范围:=OFFSET(Sheet3!$A$2:$C$36,0,0,COUNTA(Sheet3!$A:$A),COUNTA(Sheet3!$4:$4))为此,请使用输入>名称>定义。将范围命名为“demoRange”
- 转到 Sheet1 并创建一个组合框,(它必须在单独的工作表上)。(使用控件工具箱菜单,而不是窗体菜单)。
- 单击“设计模式”按钮(带铅笔的蓝色三角形),然后右键单击组合框并转到“属性”。
- 在组合框的属性窗口中,更改 ListFillRange 属性,使其指向您在步骤 2 中创建的命名范围(“demoRange”)。
- 您可能希望将 ColumnCount 属性更改为 3,将 ColumnWidths 属性更改为“50,50,50”
- 通过在linkedCell 属性中键入A1,将linkedCell 属性设置为单元格“A1”。
- 关闭属性窗口,双击组合框来定义它的 change() 事件。
- 在新组合框的更改事件的子例程中放置 Debug.Assert(false) 或 Msgbox("demo") 行。
- 退出设计模式
- 重要- 现在在组合框中选择一个项目。事件应该在第一次正常触发。(如果您不执行此步骤,则不会显示该错误 - 必须在组合框中选择某些内容)
- 在任何工作表和任何位置编辑工作簿 [Edit] 或任何其他打开的工作簿 [/edit] 中任意位置的单元格。每次编辑任何单元格时(至少对我而言),组合框的 onchange 事件都会运行。
同样,这是否正常,我正在做的事情的最佳选择是什么?这个组合框链接到各种单元格,应该是默认情况下excel提供的数据验证下拉列表中小字体的替代品。