Excel VBA ComboBox2 не получает нужный контент - PullRequest
0 голосов
/ 16 апреля 2010

У меня проблема с содержимым в выпадающем списке. На моей пользовательской форме есть 3 комбинированных списка. В зависимости от выбранного элемента в combobox1, combobox2 должен отображать либо значение 1, либо значение 2.

То же самое будет происходить с содержимым выпадающего списка 3, который зависит от комбинации выбранных элементов из выпадающего списка 1 и 2.

Однако я сталкиваюсь с проблемами со списком 2, который всегда заполняется набором 2, даже если я выбираю элемент в списке 1, который должен генерировать набор 1 во втором списке.

Это код, который я использовал:

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 голосов
/ 19 апреля 2010

Это будет сделано, поскольку ваш код не заканчивается, когда вы используете оператор goto. То есть Вы отправляете код в LineComboBox1set1, и код выполняет его, а затем продолжает запускать каждую строку кода, так как ничто не останавливает его!

Быстрое решение состоит в том, чтобы просто добавить «Exit Sub» после каждого «End With», но если бы это был мой код, я бы реорганизовал его, используя переключатель 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...