Доступ: значения Combobox зависят от предыдущего Combobox - PullRequest
0 голосов
/ 10 апреля 2019

Итак, у меня есть два комбинированных списка, Combobox1 и Combobox2.Если пользователь выбирает «Apple» для Combobox1, я хочу, чтобы значения для Combobox2 были «Соус» и «Семена».

Аналогично, если пользователь выбирает «Blueberry» для Combobox1, я 'Мне бы хотелось, чтобы значения Combobox2 были такими, как «Пирог» и «Cobbler».

Я собираюсь выяснить, как сделать значения для второго комбинированного списка на основе первого выбора.Я думаю, что это будет что-то вроде этого ...

Private Sub Combobox1_Change()
    If Combobox1= Apple Then
        Combobox2.AddItem "Sauce"
        Combobox2.AddItem "Seeds"
    End If

    If Combobox1= BlueberryThen
        Combobox2.AddItem "Pie"
        Combobox2.AddItem "Cobbler"
    End If
End Sub

Событие onChange работает на основе проведенного мною теста, но независимо от того, что я выберу для первого комбинированного списка, второй комбинированный список пуст.

1 Ответ

1 голос
/ 10 апреля 2019

Метод combobox AddItem добавит элемент в ValueList комбо.Но я сомневаюсь, что это то, что вы действительно хотите.Если пользователь выбрал "Apple" в первом комбо, а затем вернулся и выбрал "Blueberry" , я подозреваю, что вы хотите, чтобы второе комбо содержало только "Blueberry" вариантов, а не "Apple" и "Blueberry" .

Избегайте этого, напрямую изменяя свойство ValueList ...

Option Compare Database
Option Explicit

Private Sub Combobox1_AfterUpdate()
    Dim strValueList As String

    Select Case Me.Combobox1.Value
    Case "Apple"
        strValueList = "Sauce;Seeds"
    Case "Blueberry"
        strValueList = "Pie;Cobbler"
    Case Else
        MsgBox "What should happen when selection = '" & Me.Combobox1.Value & "'?"
    End Select
    Me.Combobox2.RowSource = strValueList
End Sub

Примечания:

  1. Используйте событие AfterUpdate первого комбо, поскольку его значение было завершено в этот момент.
  2. Включить Option Explicit как Андре предложил .Не пишите код VBA без него.
  3. Подумайте о том, чтобы сохранить имена и варианты фруктов в таблице и использовать запросы вместо списков значений для источников строк в выпадающем списке.Затем, когда вам нужно изменить доступные варианты, отредактируйте данные в таблице, а не исправляйте код VBA.
...