我有一个嵌入了组合框表单控件(下拉菜单)的工作表,其中输入范围是一个动态命名范围(不是验证下拉菜单)。
当范围改变时,下拉列表中列出的值会相应修改,但即使下拉列表中显示的值被修改,链接的单元格值也不会更新。
工作簿应该是无宏的,所以我不能使用 VBA 强制刷新单元格值。
我的互联网搜索似乎表明这是不可能的,但我可能错过了一些东西。
编辑:
工作簿中没有外部内容,也没有链接,因此刷新外部链接没有帮助。
命名的动态范围全都是内部的,例如一个命名范围 (Choice_List) 可以引用=OFFSET(Test!$A$2:$A$11;0;0;Test!$B$2)
。
当单元Test!$B$2
格改变时,显示的列表也会相应改变,但如果新列表包含的元素少于当前选定的项目索引,则下拉菜单将显示列表的最后一项,并且链接单元格的值不会改变。
设置:
初始选择:
更改最大项目数后:
答案1
我做了一些调查,这看起来像是另一个 Microsoft$oft 错误。
与 ComboBox 对应的 DropDown 对象中存储的内部值正确更改为 2,但链接的单元格未使用新值更新。
显然,这是因为用户或某些 VBA 代码都没有改变该值,而是由于列表本身缩小后需要将值恢复到有效范围内而进行的“校正”(由 Excel 本身进行!)。
我尝试的任何方法都无法强制更新,甚至手动也不行(当然,除了从 ComboBox 中选择不同的值)。
这仅有的解决方案是使用 VBA。最好的选择可能是创建一个包含代码的插件。这样工作簿本身就不会包含宏。