Выпадающий список пользовательской формы, заполняющийся неправильно при изменении значения - PullRequest
0 голосов
/ 23 мая 2019

У меня есть пользовательская форма с двумя выпадающими списками.Первый имеет три параметра, а второй заполняет различные параметры в зависимости от того, какой из трех вариантов вы выбрали первым.При тестировании выпадающих списков все работает в первый раз.Но, как только вы попытаетесь изменить значение в первом раскрывающемся списке, вы увидите, что у него более 12 параметров (первоначальные 3 варианта дублируются снова и снова).Ни одна из опций не будет снова заполнять второй выпадающий список.

Private Sub ComboBox1_DropButtonClick()

With ComboBox1
.AddItem "Option 1"
.AddItem "Option 2"
.AddItem "Option 3"
End With

End Sub

-------------------------------------------------------------------

Private Sub ComboBox1_Change()

Dim index As Integer
index = ComboBox1.ListIndex

ComboBox2.Clear

Select Case index
Case Is = 0
    With ComboBox2
        .AddItem "Option 1.1"
        .AddItem "Option 1.2"
        .AddItem "Option 1.3"
    End With
Case Is = 1
    With ComboBox2
        .AddItem "Option 2.1"
        .AddItem "Option 2.2"
        .AddItem "Option 2.3"
        .AddItem "Option 2.4"
        .AddItem "Option 2.5"
    End With
Case Is = 2
    With ComboBox2
        .AddItem "Option 3.1"
        .AddItem "Option 3.2"
    End With
End Select

End Sub

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

1 Ответ

0 голосов
/ 23 мая 2019

Итак, чтобы проработать мой комментарий:

Изменение:

Private Sub ComboBox1_DropButtonClick()

В:

Private Sub UserForm_Initialize()

Потому что сейчас вы добавляете элементы в свой ComboBox1каждый раз, когда вы нажимаете кнопку раскрывающегося списка.Очевидно, что создание большего индекса приводит к тому, что ваш второй ComboBox не может добавлять элементы.Несколько странно, что вы не заметили эту практику, потому что вы применили и код ComboBox2.Clear.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...