VBA Excel. Заполнение списка ComboBox по условию

    Заполнение списка ComboBox из кода VBA Excel по условию в зависимости от выбранного значения в другом элементе управления ComboBox на примере ФИО.

    Пример для заполнения ComboBox по условию

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

    1. Исходная таблица со списками фамилий, имен и отчеств для заполнения элементов управления ComboBox из кода VBA Excel:

    Таблица со списками фамилий, имен и отчеств

    Список ФИО отсортирован по алфавиту, что позволит без использования дополнительного кода VBA Excel заполнить ComboBox1 только уникальными фамилиями, а также облегчит поиск фамилии для выбора в раскрывающемся списке.

    2. Пользовательская форма с элементами управления ComboBox1, ComboBox2 и ComboBox3 для фамилий, имен и отчеств с соответствующими им надписями:

    Пользовательская форма с элементами управления Label и ComboBox

    3. Необходимо с помощью кода VBA Excel:

    • заполнить список элемента ComboBox1 уникальными фамилиями;
    • заполнить ComboBox2 именами, соответствующими выбранной фамилии в ComboBox1;
    • заполнить ComboBox3 отчествами, соответствующими выбранной фамилии в ComboBox1 и выбранному имени в ComboBox2.

    Условие заполнения следующего элемента ComboBox — выбранное значение в предыдущем поле со списком.

    Заполнение ComboBox1 уникальными фамилиями

    Заполняем список ComboBox1 фамилиями из таблицы с помощью кода VBA Excel при открытии пользовательской формы, используя событие UserForm_Initialize:

    Фамилии из столбца таблицы копируются в массив для ускорения цикла, так как в массивах циклы работают быстрее, чем в диапазонах.

    Заполнение ComboBox2 именами по условию

    Когда мы выбираем значение в поле со списком ComboBox1, происходит событие ComboBox1_Change, которое будем использовать для автоматического заполнения элемента ComboBox2 именами, соответствующими выбранной фамилии:

    Имена в ComboBox2 могут повторяться, так как отбор уникальных значений не производится. Если имена в списке ComboBox2 должны быть уникальными, можно сначала добавить их в объект Collection с отбором уникальных значений, а потом из объекта Collection скопировать имена с помощью цикла For Each ... Next в ComboBox2:

    Заполнение ComboBox3 отчествами по условию

    Выбор одного из элементов в ComboBox2, как и автоматический выбор единственного элемента предыдущим кодом, вызывает событие ComboBox2_Change, которое будем использовать для автоматического заполнения элемента ComboBox3 отчествами, соответствующими выбранной фамилии в ComboBox1 и выбранному имени в ComboBox2:

    Отчества в ComboBox3 повторяться не могут, так как это означало бы, что в таблице есть два или более совершенно одинаковых ФИО.

    Один из результатов работы кода VBA Excel по заполнению полей со списком ComboBox в зависимости от выбранного значения в другом элементе управления ComboBox на примере ФИО:

    Выбор ФИО с помощью полей со списком ComboBox

    Если фамилия в списке встречается один раз, и ей соответствует одно имя, а фамилии и имени — одно отчество, тогда при выборе этой фамилии в элементе управления ComboBox1, имя и отчество в ComboBox2 и ComboBox3 выберутся автоматически.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    4 комментария для “VBA Excel. Заполнение списка ComboBox по условию”

    1. Александр

      Добрый день!
      Только знакомлюсь с VBA!
      Не могли бы написать код к:
      Имена в ComboBox2 могут повторяться, так как отбор уникальных значений не производится. Если имена в списке ComboBox2 должны быть уникальными, можно сначала добавить их в объект Collection с отбором уникальных значений, а потом из объекта Collection скопировать имена с помощью цикла For Each … Next в ComboBox2.

      1. Евгений

        Здравствуйте, Александр!
        Добавил в статью код для заполнения списка элемента управления ComboBox2 уникальными именами.

    Добавить комментарий

    Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора.