Многоколоночный комбинированный список Excel VBA - простые макросы Excel

Содержание

Ниже мы рассмотрим программу на Excel VBA который создает пользовательскую форму, содержащую многоколоночное поле со списком.

Пользовательская форма, которую мы собираемся создать, выглядит следующим образом:

Чтобы создать эту пользовательскую форму, выполните следующие шаги.

1. Откройте редактор Visual Basic. Если обозреватель проекта не отображается, щелкните «Просмотр», «Обозреватель проекта».

2. Щелкните Вставить, Пользовательская форма. Если панель инструментов не появляется автоматически, щелкните «Просмотр», «Панель инструментов». Ваш экран должен быть настроен, как показано ниже.

3. Добавьте метку, поле со списком и командные кнопки. Как только это будет выполнено, результат должен соответствовать изображению пользовательской формы, показанному ранее. Например, создайте элемент управления полем со списком, щелкнув ComboBox на панели инструментов. Затем вы можете перетащить поле со списком в пользовательскую форму.

4. Вы можете изменить имена и заголовки элементов управления. Имена используются в коде Excel VBA. Подписи - это те, которые появляются на вашем экране. Рекомендуется изменять имена элементов управления, но в этом нет необходимости, потому что в этом примере у нас есть только несколько элементов управления. Чтобы изменить заголовок пользовательской формы, метки и командных кнопок, щелкните «Вид», «Окно свойств» и щелкните каждый элемент управления.

5. Чтобы отобразить пользовательскую форму, поместите кнопку на листе и добавьте следующую строку кода:

Частная подпрограмма CommandButton1_Click ()
UserForm1.Show
Конец подписки

Теперь мы собираемся создать Sub UserForm_Initialize. Когда вы используете метод Show для пользовательской формы, эта подпрограмма будет выполнена автоматически.

6. Откройте редактор Visual Basic.

7. В проводнике проекта щелкните правой кнопкой мыши UserForm1 и выберите команду Просмотреть код.

8. Выберите Userform в левом раскрывающемся списке. В правом раскрывающемся списке выберите «Инициализировать».

9. Добавьте следующие строки кода:

Частная подписка UserForm_Initialize ()
ComboBox1.ColumnCount = 2
Тусклые пленки (от 1 до 5, от 1 до 2) в виде строки
Dim i как целое число, j как целое число
Films (1, 1) = «Властелин колец»
Films (2, 1) = "Скорость"
Films (3, 1) = «Звездные войны»
Films (4, 1) = «Крестный отец»
Films (5, 1) = «Криминальное чтиво»
Films (1, 2) = "Приключение"
Films (2, 2) = "Действие"
Films (3, 2) = «Научная фантастика»
Films (4, 2) = "Преступление"
Films (5, 2) = "Драма"
ComboBox1.List = Фильмы
Конец подписки

Объяснение: Первая строка кода устанавливает количество столбцов поля со списком равным 2. Вместо того, чтобы устанавливать количество столбцов во время выполнения, вы также можете настроить этот параметр во время разработки. Для этого щелкните правой кнопкой мыши элемент управления полем со списком, выберите «Свойства» и установите для свойства ColumnCount значение 2. Затем мы объявляем и инициализируем двумерный массив. Последняя строка кода назначает массив полю со списком.

Мы создали первую часть пользовательской формы. Хотя это и так выглядит аккуратно, пока мы нажимаем кнопки команд в пользовательской форме, ничего не произойдет.

10. В проводнике проекта дважды щелкните UserForm1.

11. Дважды щелкните кнопку ОК.

12. Добавьте следующие строки кода:

Частная подпрограмма CommandButton1_Click ()
Разгрузить меня
MsgBox "Вы выбрали" & ComboBox1.Value
При ошибке Возобновить Далее
MsgBox "Вам нравится" и ComboBox1.Column (1) & "фильмы"
Конец подписки

Примечание. Эти строки кода закрывают пользовательскую форму Excel VBA и отображают выбранный элемент и жанр. Оператор 'On Error Resume Next' игнорирует ошибку, когда пользователь заполняет свой собственный фильм (в этом случае жанр недоступен).

13. Дважды щелкните кнопку «Отмена».

14. Добавьте следующую строку кода:

Частная подпрограмма CommandButton2_Click ()
Разгрузить меня
Конец подписки

Результат, когда вы выбираете Скорость и нажимаете ОК.

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave