Кнопка на рабочем листе создается с помощью Панели инструментов Формы (Элементы управления). Макрос назначается двойным щелчком левой кнопки мыши или с помощью контекстного меню
Работа с формами.
Работа любой программы подразделяется на 3 этапа: ввод информации, обработка информации и вывод результатов.
Ввод информации часто осуществляется с помощью клавиатуры и мыши.
Чтобы организовать взаимодействие человека и программы, используются разнообразные экранные формы.
Примером таких форм служат диалоги в программах VBA.
Создать окно диалога можно двумя способами.
1 способ: С помощью контекстного меню на ярлыке листа выберите команду ИСХОДНЫЙ ТЕКСТ. В появившемся окне выберите команду ВСТАВКА - UserForm.
2 способ: Выберите команду СЕРВИС - МАКРОС - РЕДАКТОР VisualBasicи далее ВСТАВКА - UserForm.
В созданном окне диалога пользователь размещает элементы окна (объекты), используя Панель элементов. Выбор объекта и его расположение осуществляется с помощью левой кнопки мыши.
Состав Панели элементов
Название элемента | Имя в программе |
Надпись | Label |
Поле | TextBox |
Рамка | Frame |
Кнопка | CommandButton |
Поле со списком | ComboBox |
Флажок | CheckBox |
Переключатель | OptionButton |
Список | ListBox |
Полоса прокрутки | ScrollBar |
Счетчик | SpinButton |
Существуют и другие элементы.
В программе все имена объектов имеют номер. Например, если создать в окне диалога флажок, то его имя в программе будет CheckBox1.
Надпись Используется для создания текстовых вставок в окне.
Поле Используется для ввода(вывода) текста.
Рамка Обеспечивает объединение нескольких элементов диалогового окна в группу.
Кнопка Командная кнопка, которой назначается процедура или макрос.
Поле со списком Представляет собой комбинацию выпадающего списка.
Флажок Обеспечивает аддитивный выбор значения. Свойство Value принимает значение True, если флажок выбран и False – в противном случае.
Переключатель Обеспечивает альтернативный выбор из списка взаимоисключающихся опций. Такие переключатели входят в состав группы, если они различны по назначению. Выбор одного переключателя внутри группы означает автоматический не выбор других. Свойство Value принимает значение True, если переключатель выбран и False – в противном случае.
Список Представляет собой окно, содержащее список значений.
Полоса прокрутки Создает горизонтальную или вертикальную линейку прокрутки. Свойство Value содержит число, соответствующее положению ползунка. Свойства Min и Max управляют диапазоном значений.
Счетчик Регулятор счетчика (спиннер) аналогичен линейке прокрутки.
Примеры создания программ для работы с объектами окна диалога
Пример 1. Создать окно диалога, содержащее поля для ввода фамилии и имени. Значения этих полей записать в электронную таблицу.
На рабочем листе "Лист1" создать ЭТ следующего вида:
А B C D
1 Фамилия Имя
Создадим форму, которая будет содержать 2 поля для ввода текста (имени и фамилии), 2 надписи и 2 кнопки. При нажатии кнопки ВВОД информация из текстовых полей будет записываться в ЭТ, а при нажатии кнопки КОНЕЦ будет происходить выход из программы.
Label2 |
TextBox2 |
CommandButton2 |
TextBox1 |
CommandButton1 |
Label1 |
Установим свойства объектов:
Объект | Свойство | Значение |
Label1 | Caption | Фамилия |
Label2 | Caption | Имя |
CommandButton1 | Caption | Ввод |
CommandButton2 | Caption | Конец |
Кнопке КОНЕЦ назначим процедуру :
Private Sub CommandButton2_Click()
End
End Sub
Кнопке ВВОД назначим процедуру:
Option Explicit
Private Sub CommandButton1_Click()
Dim Фамилия, Имя As String
Dim Row As Integer
Row = Application.CountA(Sheets("Лист1").Range("А:А")) + 1
With UserForm1
Фамилия = .TextBox1.Text
Имя = .TextBox2.Text
End With
With Sheets("Лист1")
.Cells(Row, 1).Value = Фамилия
.Cells(Row, 2).Value = Имя
End With
With UserForm1
.TextBox1.Text = ""
.TextBox2.Text = ""
End With
End Sub
Некоторые объяснения к программе :
В VBA диапазон "А:А" означает столбец А. Функция СЧЕТЗ в русскоязычной версии Еxcel подсчитывает число непустых ячеек в выделенном диапазоне. Ее эквивалентом в англоязычной версии является функция CountA. Т.о. функция
Row = Application.CountA(Sheets("Лист1").Range("А:А")) + 1
вычисляет число непустых ячеек в столбце А.
В переменную целого типа Row записывается количество непустых ячеек столбца А и значение переменной увеличивается на 1 для того, чтобы считанная из текстовых полей информация записывалась в пустые строки таблицы.
Оператор With – End With используется для удобства при работе с несколькими свойствами или методами одного и того же объекта.
Например, конструкция
With Sheets("Лист1")
.Cells(Row, 1).Value = Фамилия
.Cells(Row, 2).Value = Имя
End With
без оператора With – End Withэквивалентна конструкции вида :
Sheets("Лист1").Cells(Row, 1).Value = Фамилия
Sheets("Лист1").Cells(Row, 2).Value = Имя
Sheets и Cells – это объекты VBA, обозначающие рабочий лист и клетку с соответствующими координатами.
Программа запускается в окне отладчика клавишей F5 или кнопкой "Запуск подпрограммы". Для запуска программы можно также создать командную кнопку на рабочем листе Excel, назначив ей соответствующий модуль. Например, такой
Sub Кнопка1_Щелкнуть()
UserForm1.Show
End Sub
Кнопка на рабочем листе создается с помощью Панели инструментов Формы (Элементы управления). Макрос назначается двойным щелчком левой кнопки мыши или с помощью контекстного меню.
Пример2. Создать окно диалога, содержащее 2 переключателя, 2 надписи и 2 кнопки. В зависимости от того, какой переключатель установлен, в клетку А1 электронной таблицы будет записываться название этого переключателя.
OptionButton1 |
Label1 |
CommandButton1 |
Окно формы имеет вид:
OptionButton2 |
Label2 |
CommandButton2 |
Установим свойства объектов:
Объект | Свойство | Значение |
Label1 | Caption | Муж |
Label2 | Caption | Жен |
CommandButton1 | Caption | Ввод |
CommandButton2 | Caption | Конец |
Кнопка Ввод считывает значение переключателя, кнопка Конец осуществляет выход из программы.
!!! При работе с переключателями необходимо, чтобы свойство Loked для них имело значение False.
Кнопке Конец назначим процедуру :
Private Sub CommandButton2_Click()
End
End Sub
Кнопке Ввод назначим процедуру:
Option Explicit
Private Sub CommandButton1_Click()
Dim Пол As String
With UserForm1
If .OptionButton1 = True Then Пол = "Муж"
If .OptionButton2 = True Then Пол = "Жен"
End With
With Sheets("Лист1")
.Cells(1, 1) = Пол
End With
End Sub
Пример3. Создать окно диалога, содержащее 2 флажка, 2 надписи и 2 кнопки. Если флажки установлены, то в клетках ЭТ А1 и А2 записывается слово "Да", в противном случае "Нет".
CheckBox1 |
Label1 |
CommandButton1 |
Окно формы имеет вид:
CheckBox2 |
Label2 |
CommandButton2 |
Установим свойства объектов:
Объект | Свойство | Значение |
Label1 | Caption | Оплачено |
Label2 | Caption | Паспорт сдан |
CommandButton1 | Caption | Начало |
CommandButton2 | Caption | Конец |
Кнопка "Начало" считывает значения флажков, кнопка "Конец" – выход из программы.
!!! При работе с флажками свойствам Locked также устанавливается значение False.
Кнопке Конец назначим процедуру :
Private Sub CommandButton2_Click()
End
End Sub
Кнопке Начало назначим процедуру:
Option Explicit
Private Sub CommandButton1_Click()