三个组合框,一个功能下拉列表

时间:2014-11-26 12:51:31

标签: excel vba combobox

我遇到了一个问题,即将三个可搜索的组合框与下拉列表结合使用。

我创建了三个可搜索的组合框,其下拉方式与此类似,我在youtube上进行了设置(video)。简而言之,它是一个可以输入的组合框,动态更新ListFillRange以对应于输入的字符串。因此,您可以搜索国家/地区,然后在动态下拉菜单中选择它。

我有三个组合框可供选择国家。组合框位于一张纸上,动态列表(称为CountryOne,CountryTwo,CountryThree - 在名称管理器中创建)位于单独的工作表上。我已经在保管箱上传了file

对于组合框,使用以下简单代码:

Private Sub ComboBox1_Change()
ComboBox1.ListFillRange = "CountryOne"
ComboBox1.DropDown
End Sub

Private Sub ComboBox3_Change()
ComboBox3.ListFillRange = "CountryTwo"
ComboBox3.DropDown
End Sub

Private Sub ComboBox2_Change()
ComboBox2.ListFillRange = "CountryThree"
ComboBox2.DropDown
End Sub

每个组合框都可以正常工作,直到我选择其中一个国家。选择一个国家(例如在combobox1中)并移动到另一个组合框(combobox2)后,该组合框的下拉列表停止工作。如果我在combobox2中输入内容,则下拉列表显示在combobox1(组合框与所选国家/地区)下,并仅显示所选国家/地区。这很难解释,所以请看文件。

为了帮助发现问题,我创建了以下video。在其中我首先测试所有三个组合框,它们工作正常。然后我在其中一个中选择一个国家,另外两个停止正常工作。

任何解决问题的想法都会非常有用。

1 个答案:

答案 0 :(得分:0)

我不想回答我自己的问题,但万一有人认为这有帮助。

我已经以某种方式解决了这个问题,虽然我不明白为什么问题首先发生。 我认为问题出在DropDown列表中,自动出现在非活动组合框中。为了避免这种情况,我已经进行了以下代码更改,但是问题没有解决,而是通过了:

而不是

Private Sub ComboBox1_Change()
ComboBox1.ListFillRange = "CountryOne"
ComboBox1.DropDown
End Sub

我现在用

Private Sub ComboBox1_Change()
ComboBox1.ListFillRange = "CountryOne"
If ComboBox1.ListCount <> 1 Then
    ComboBox1.DropDown
End If
End Sub

添加的if子句禁用当列表长度为1时自动出现的下拉列表 - 这意味着,当选择了某个国家/地区时。 Here可以找到“已修复”的文件。

感谢Dee的贡献。