Приведённые практические работы по программированию могут быть использованы при изучении элементов выбора Visual Basic. Списки целесообразно изучать после знакомства с переключателями (OptionButton) и флажками (CheckBox).
При объяснении нового материала удобно использовать распечатки с изложением теоретического материала и примерами программ, которые выдаются каждому студенту (ученику), либо методические пособия (мы используем авторское пособие “Практикум по решению задач в среде Visual Basic”, часть 1, 2).
Приведённые практические работы рассчитаны на 3 занятия по 2 часа. Задания самостоятельной работы можно использовать в качестве домашних заданий.
В Visual Basic существует 2 вида списков:
- комбинированный список ComboBox;
- список ListBox.
1. Комбинированный список ComboBox
Комбинированный список представляет комбинацию раскрывающегося списка и текстового поля. Пользователь имеет возможность выбрать определенное значение какого-либо параметра в раскрывающемся списке или ввести необходимое значение в текстовое поле. Если элементы не помещаются в границах стандартного окна, то автоматически появляются полосы прокрутки, с помощью которых можно выбирать требуемый элемент в списке.
Свойство Style задаёт внешний вид комбинированного списка (по умолчанию оно равно 0 — элемент ComboBox отображается в виде текстового поля со стрелкой справа, позволяющей развернуть весь список и выбрать требуемое значение). Если Style = 1, то постоянно отображается весь список (или список с полосой прокрутки).
Основные свойства ComboBox
Название
Описание
List
ListIndex
ListCount
NewIndex
Sorted
Style
0 — Dropdown Combo (раскрывающийся комбинированный список);
1 — Simple Combo (простой комбинированный список);
2 — Dropdown List (раскрывающийся список).
Text
AddItem
Clear
RemoveItem
Для добавления нового элемента в список используется метод AddItem.
Пример: Combo1.AddItem “Пение” — добавить в список Combo1 слово Пение.
Добавляемые в список элементы имеют тип String; [index] — порядковый номер в списке, под которым будет находиться новый элемент (необязательный параметр).
Добавить элементы в комбинированный список можно также на этапе разработки с помощью свойства List. Для добавления очередного элемента в список нужно ввести этот элемент в свойстве List и нажать комбинацию клавиш Ctrl + Enter.
2. Список ListBox
Данный элемент применяется в том случае, когда пользователю необходимо выбрать один элемент из имеющегося списка для выполнения определенных действий. Объекты ListBox используются обычно в сочетании с управляющими кнопками, которые позволяют обрабатывать элементы списка (добавлять, удалять и т. д.).
В отличие от ComboBox список ListBox можно создать многоколончатым и осуществлять выбор нескольких элементов одновременно.
Свойство MultiSelect позволяет задать режим множественного выбора элементов в списке. В режиме MultiSelect = 1 добавление элемента в выделенную группу или исключение из нее осуществляется с помощью щелчка мыши или нажатия пробела. Если MultiSelect = 2, то в этом случае выделение элементов выполняется по аналогии с программой Проводник:
- щелчок мыши при нажатой клавише Shift позволяет выделить несколько подряд расположенных элементов;
- щелчок мыши при нажатой клавише Ctrl даёт возможность выделять группу несмежных элементов списка.
Основные свойства элемента ListBox
Название
Описание
Columns
0 — одноколончатый список с вертикальной прокруткой;
1 — одноколончатый список с горизонтальной прокруткой;
>1 — многоколончатый список с горизонтальной прокруткой
Selected
MultiSelect
0 — None (обычный список);
1 -Simple (простой множественный выбор — щелчок мыши или нажатие Пробел выделяет очередной элемент или снимает выделение);
2 — Extended (расширенный множественный выбор) — выделение с использованием вспомогательных клавиш.
см. табл. 2.53
Методы ListBox аналогичны методам ComboBox.
Практическая работа 1. Проект “Результаты сессии”
Задание: создать проект, содержащий 3 списка: список студентов группы; список студентов, получивших зачёт и список неаттестованных. Двойным щелчком мыши в списке студентов (List1) выбирается фамилия и добавляется в список “Зачёт” (List2). Двойным щелчком в списке “Зачёт” фамилия возвращается назад. Кнопкой “Добавить в список” фамилия, введённая в текстовое поле Text1, заносится в список List1. Кнопка “н/а” заносит выбранную фамилию из списка студентов в список List3 ( н/а).
Private Sub Form_Load() ‘загрузка формы
List1.AddItem "Чесноков": List1.AddItem "Симонов"
List1.AddItem "Трушков": List1.AddItem "Морозова"
Private Sub List1_DblClick() ‘перенести из списка в зачёт
List1.RemoveItem List1.ListIndex ‘удалить из списка
Private Sub List2_DblClick() ‘перенести назад в Список из Зачёт
Private Sub List3_DblClick() ‘перенести назад в список из н/а
Private Sub Command1_Click() ‘добавить в список из текст. поля
Private Sub Command3_Click() ‘добавить в н/а
List1.RemoveItem List1.ListIndex ‘удалить из списка
Задания
- Добавьте в проект список оценок (2, 3, 4, 5) – List4.
- Измените проект таким образом, чтобы можно было добавлять в результаты фамилию и оценку ученика.
- Создайте кнопку “Очистить результаты”.
Примерный вид формы показан на рисунке.
Практическая работа 2. Проект “Переводчик”
Задание: создать проект для проверки знания иностранных слов (англо-русский и русско-английский переводчик).
Элементы интерфейса проекта:
- Комбинированные списки Combo1 и Combo2 – для хранения русских и английских слов. Индексы русских слов в списке должны соответствовать индексам соответствующих им английских слов.
- Текстовое поле Text1 — для вывода случайного слова из списка, которое необходимо перевести.
- Текстовое поле Text2 — для вывода комментария “Верно” или “Неверно”.
- Текстовые поля Text3, Text4 — для вывода количества вопросов и верных ответов.
- Таймер Timer1 – для временной задержки при выводе очередного вопроса.
- Image1 – для вывода рисунка, соответствующего слову.
- Элемент MMControl1 — для воспроизведения звука.
Элемент MMControl является дополнительным компонентом VB (Activ X). Для его установки необходимо:
- Открыть в меню Проект – Компоненты вкладку Управление (Control);
- Установить флажок MicrosoftMultimedia Control 6.0;
- На панели элементов управления появится новый значок MMControl.
Рисунки к проекту сохраните в папке с проектом в порядке следования слов в списке Combo1:
Ris0.jpg – рисунок к первому слову списка;
Ris1.jpg – рисунок ко второму слову списка и т.д.
Для определения имени файла рисунка в проекте используем переменную Path:
Path = "Ris" & Mid(Str(n), 2, 1) & ".jpg"
Функция Mid используется для того, чтобы убрать пробел перед числом в имени файла, т.к. функция Str(n) для положительного числа формирует строку с пробелом перед числом. Таким образом, получаем неверное имя файла Ris 0.jpg, вместо Ris0.jpg.
Рассмотрим основные процедуры проекта.
1) В процедуре загрузки формы нужно заполнить списки русских и английских слов.
Dim n, k, z, p As Integer, Path As String
‘n – индекс слова в списке; k – количество верных ответов; z – кол. вопросов; p – признак направления перевода; Path – путь к файлу с рисунком на диске
Private Sub Form_Load()
Combo1.AddItem "собака": Combo1.AddItem "дельфин"
Combo1.AddItem "осёл": Combo1.AddItem "красный"
Combo1.AddItem "зеленый": Combo2.AddItem "Dog"
Combo2.AddItem "Dolphin": Combo2.AddItem "Donkey"
Combo2.AddItem "Red": Combo2.AddItem "Green"
k = 0 ’количество верных ответов
z = 0 ‘количество вопросов
2) При выборе кнопки “Перевод рус/англ” должно появляться русское слово. Для данного слова нужно найти перевод в списке английских слов. Список русских слов при этом должен скрываться.
Private Sub Command5_Click() ‘Перевод рус/англ
p = 1 ‘признак перевода – рус/англ
Combo1.Visible = False ‘скрыть список русских слов
Combo2.Visible = True ‘показать список англ. слов
Label1.Caption = "Русское слово"
Timer1.Enabled = True ‘включить таймер
3) В процедуре таймера случайным образом определяем индекс слова в списке слов. Если p=1, то было выбрано направление перевода рус/англ., поэтому слово выбирается из списка русских слов Combo1.
Private Sub Timer1_Timer()
z = z + 1 ‘подсчёт кол. вопросов
n = Int(Rnd * 4) ‘случайный выбор индекса слова в списке слов
If p = 1 Then Text1.Text = Combo1.List(n)
4) Для выбора перевода заданного русского слова пользователь делает щелчок по списку английских слов. Если индекс исходного русского слова n совпадает с индексом слова-перевода, выбранного пользователем, то ответ верный.
Private Sub Combo2_Click() ‘список англ. слов
If n = Combo2.ListIndex Then ‘если ответ верный
Image1.Visible = True ‘показать рисунок
MMControl1.FileName = "da.wav" ‘загрузить звуковой файл
Path = "Ris" & Mid(Str(n), 2, 1) & ".jpg"
Image1.Picture = LoadPicture(Path) ‘загрузить файл с соответствующим рисунком
Else ‘если ответ неверный
MMControl1.Command = "sound" ‘воспроизвести звук. файл
Задания:
- Создайте процедуру кнопки “Перевод англ/рус”.
- Добавьте кнопку Сброс.
- Подберите 2 звуковых файла для подтверждения верного и неверного ответа, подключите эти файлы к проекту.
- Создайте заставку к проекту.
Самостоятельная работа
- Создать проект “Выбор шрифта”, позволяющий выбрать с помощью списков тип шрифта, размер, начертание (свойства): жирный, подчёркнутый, курсив. Выбранные параметры должны применяться к метке Образец.
Свойства шрифта в метке задаются следующими командами:
Label1.Font.Italic = True – установить курсив
Label1.Font.Bold = False – отменить жирный шрифт
Label1.Font.Underline = True – установить подчёркнутый шрифт
Label1.Font = Combo1.Text – применить к метке тип шрифта, выбранный в комбинированном списке 1
Label1.Font.Size = Combo1.Text — применить к метке размер шрифта, выбранный в комбинированном списке 1
Литература
- Глушаков С.В. , Мельников В.В., Сурядный А.С. Программирование в среде Windows. Visual Basic 6.0. М.: ООО “Издательство АСТ”, 2001
- Браун С. Visual Basic. Учебный курс. – Спб.: Питер, 2002
VBA Excel. ComboBox (заполнение поля со списком)
Способы заполнения ComboBox данными с помощью кода VBA Excel. Добавление значений в поле со списком методом AddItem, из массива и из диапазона рабочего листа.
З аполнение ComboBox методом AddItem
Создайте пользовательскую форму UserForm1 и разместите на ней поле со списком ComboBox1. Используйте метод AddItem для заполнения элемента управления значениями:
Скопируйте код и запустите его выполнение, на открывшейся форме раскройте поле со списком, в результате увидите, что элемент управления ComboBox1 заполнен соответствующими значениями:
З аполнение ComboBox значениями из массива
Для заполнения элемента управления ComboBox значениями из массива будем использовать свойство поля со списком List и функцию Array:
.ComboBox1.List = Array("Кружка", "Стакан", "Бокал", "Пиала", "Фужер")
Результат выполнения кода будет таким же, как и на предыдущем изображении.
Таким же образом можно использовать не только функцию Array, но и переменную массива, предварительно объявленную и заполненную значениями:
Dim a(4) As String
З аполнение ComboBox значениями из ячеек
Для заполнения поля со списком значениями из диапазона ячеек рабочего листа будем использовать свойство комбинированного списка RowSource, предварительно заполнив диапазон "A1:A5" активного листа уже известными значениями:
Чтобы присвоить элементу управления ComboBox значения из диапазона ячеек любого рабочего листа, добавьте ссылку на него перед наименованием диапазона, например, замените "A1:A5" на "Лист1!A1:A5", и поле со списком будет заполнено значениями ячеек "A1:A5", расположенных на листе с именем "Лист1".
Эти же способы используются и для заполнения значениями элемента управления ListBox.
Иногда возникает необходимость заполнения элементов управления ListBox и ComboBox уникальными значениями из диапазона ячеек с повторяющимся содержимым. Смотрите, как отсортировать уникальные элементы из списка. Опубликовано 14.03.2018 Автор Время не ждёт Рубрики VBA Excel
Заполнение ComboBox данными с помощью кода VBA Excel. Добавление значений в поле со списком методом AddItem, из массива и из диапазона рабочего листа. Примеры.
Содержание
Заполнение ComboBox методом AddItem
Создайте пользовательскую форму UserForm1 и разместите на ней поле со списком ComboBox1. Используйте метод AddItem для заполнения элемента управления значениями:
Скопируйте код и запустите его выполнение, на открывшейся форме раскройте поле со списком, в результате увидите, что элемент управления ComboBox1 заполнен соответствующими значениями:

Заполнение ComboBox значениями из массива
Для заполнения элемента управления ComboBox значениями из массива будем использовать свойство поля со списком List и функцию Array:
Результат выполнения кода будет таким же, как и на предыдущем изображении.
Таким же образом можно использовать не только функцию Array, но и переменную массива, предварительно объявленную и заполненную значениями:
Заполнение ComboBox значениями из ячеек
Для заполнения поля со списком значениями из диапазона ячеек рабочего листа будем использовать свойство комбинированного списка RowSource, предварительно заполнив диапазон "A1:A5" активного листа уже известными значениями:

Чтобы присвоить элементу управления ComboBox значения из диапазона ячеек любого рабочего листа, добавьте ссылку на него перед наименованием диапазона, например, замените "A1:A5" на "Лист1!A1:A5", и поле со списком будет заполнено значениями ячеек "A1:A5", расположенных на листе с именем "Лист1". Имя листа берется из наименования ярлыка.
Более подробно о заполнении данными ComboBox можно прочитать в статье о заполнении ListBox, так как оба эти элемента управления используют одинаковые способы заполнения.
Иногда возникает необходимость заполнения элементов управления ListBox и ComboBox уникальными значениями из диапазона ячеек с повторяющимся содержимым. Смотрите, как отсортировать уникальные элементы из списка с помощью объектов Collection и Dictionary.
Вы можете скачать файл Excel с представленными выше примерами. Файл упакован в ZIP-архив. Для проверки работоспособности кода, непосредственно в редакторе VBA помещайте курсор внутри тела каждой процедуры и нажимайте кнопку «Run Sub».
VBA Excel. ComboBox – заполнение поля со списком : 5 комментариев
Не получился ни один из предложенных вариантов( С чем это может быть связано?
Оксана, скорее всего у вас имена UserForm и ComboBox другие, чем в приведенных примерах. Я сегодня в конце статьи размещу файл для скачивания с этими примерами.
Евгений, подскажите, а где в Вашем примере пользовательская форма? Что бы наглядно посмотреть)
Или это что-то у меня((( При нажатии на Run Sub в вашем файле, у меня тоже нет списка(
UserForm1 находится в папке «Forms» в проводнике редактора VBA под строчкой «ЭтаКнига». Возможно, у вас в параметрах Excel отключены макросы, поэтому коды не работают.




