Excel VBA ComboBox2无法获得正确的内容

时间:2010-04-16 13:41:59

标签: excel vba combobox population

我对组合框的内容有疑问。在我的用户表单上,有3个组合框。 根据combobox1中选择的项目,combobox2应显示第1组或第2组。

组合框3的内容也会发生同样的情况,这取决于组合框1和2中所选项目的组合。

但是,我遇到了组合框2的问题,即使我选择组合框1中应该在第二个组合框中生成组1的项目,它总是由组2填充。

这是我使用的代码:

Private Sub UserForm_Initialize()
    With ComboBox1
        .Clear
        .AddItem "In contrast"
        .AddItem "Eng?"
        .AddItem "Trillers"
        .AddItem "Natuur(lijk)"
        .AddItem "Muziektrafiek"
    End With

    If ComboBox1.Value = "In contrast" Then
        GoTo LineComboBox1Set1
    End If

    If ComboBox1.Value = "Eng?" Then
        GoTo LineComboBox1set2
    End If

    If ComboBox1.Value = "Trillers" Then
        GoTo LineComboBox1set2
    End If

    If ComboBox1.Value = "Natuur(lijk)" Then
        GoTo LineComboBox1set2
    End If

    If ComboBox1.Value = "Muziektrafiek" Then
        GoTo LineComboBox1set2
    End If


LineComboBox1Set1:
     With ComboBox2
        .Clear
        .AddItem "Op verkenning"
        .AddItem "Gehoord? Gezien?"
        .AddItem "On stage"
        .AddItem "Creabende"
        .AddItem "Ingeblikt"
     End With

LineComboBox1set2:
     With ComboBox2
        .Clear
        .AddItem "Op verkenning"
        .AddItem "Gehoord? Gezien?"
        .AddItem "On stage"
        .AddItem "Creabende"
        .AddItem "Ingeblikt"
        .AddItem "Speak up"
        .AddItem "In de kijker"
    End With

任何人都可以帮我这个吗?

提前多多感谢!!

亲切的问候, 马克

1 个答案:

答案 0 :(得分:0)

当您使用goto语句时,代码不会结束。即你将代码发送到LineComboBox1set1并且代码执行该代码,然后继续运行每行代码,因为没有什么能阻止它!

快速修复只是在每个“End With”之后添加“Exit Sub”,但如果是我的代码,我会使用SELECT CASE开关重构它,即

SELECT CASE ComboBox1.Value
     Case "In contrast"
           With ComboBox2
                Etc.....
           End With
     Case "Eng?", "Thriller" and so on
           With ComboBox2
                Stuff for set 2
           End With
  End Select