首页 > 解决方案 > Excel ActiveX 组合框在条目选择后自行清除

问题描述

根据以下教程,我在我的 excel 电子表格中设置了一个 activeX 组合框:

https://www.extendoffice.com/documents/excel/2439-excel-drop-down-list-search.html

我进行了一些更改以调整某些选项按钮的使用,以便可以使用不同的条目类型。下拉代码看起来像这样的几个 if 重复:

If OptionButton1 = True Then 'determine option material is selected
    ComboBox1.LinkedCell = "Form!B3"
 'set cell linked to box to material type cell when option is selected
    ComboBox1.ListFillRange = "DropDownList1" 'set dropdown list as materials when option is selected
    Me.ComboBox1.DropDown 'dropdown list

再次调整选项按钮的使用。

这曾经完美地运行。但是最近出现了一个问题,即在选择一个选项后,组合框决定自行清除。我已经多次重写了我的代码,多次重写了公式,并更改了每一个组合框属性以确定问题所在。我能想到的唯一问题是,在选择一个值之后,我用来填充组合框的列表在搜索新条目时会发生变化。之后列表和所选条目不再匹配,并且组合框产生错误。有什么办法可以防止这种情况发生吗?

一种可行的解决方法是在链接单元格自行清除之前单击链接单元格并按 Enter。这会将条目视为用户编写的并且不会产生此错误。奇怪的事情之一是我有两个相同的组合框,像这样设置的,只有一个会产生这个错误。除了数据集之外,我使用的另一个电子表格几乎相同,也有同样的问题,但它是第二个组合框而不是第一个组合框不起作用。代码没有区别,因为它是复制粘贴的。

编辑: 在将其发布到此处之前,我已经解决了这个问题几个月了,今天早上我终于找到了一个解决方法。它会减慢搜索速度并且非常难看,但它的工作相当可靠并且可以阻止错误导致问题。

我所做的是放置一个组合框 on-change 事件,用它自己的值替换链接的单元格。因此,如果组合框自行清除,则链接单元格将根据需要保持其值。

Private Sub ComboBox1_Change()
If OptionButton1 = True Then 'determine material option is selected
Sheet1.Range("B3") = Sheet1.Range("B3").Value

注意:这显然不是问题的解决方案,而是一种可行的解决方法。如果有人知道如何完全防止这个问题,我将不胜感激。

标签: excelvba

解决方案


看起来你错过了一个等号:

ComboBox1.ListFillRange = "=DropDownList1"

推荐阅读