Кнопка на рабочем листе создается с помощью Панели инструментов Формы (Элементы управления). Макрос назначается двойным щелчком левой кнопки мыши или с помощью контекстного меню

Работа с формами.

Работа любой программы подразделяется на 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()

Наши рекомендации