1

Тема: Формы VBA: Как создать форму

1. Создание головного модуля (Insert – Module) и присвоение ему имени  <имя_модуля> (свойство Name модуля).
Записываем в головной модуль макрос запуска формы:

Sub <имя_формы>() 
     'запуск формы:
     <имя_формы>.Show 
End Sub

Примечание – Вместо выражения <имя_формы> нужно записать фактическое имя вызываемой формы. Имя формы вводится в поле Name создаваемой формы (см. п. 2).

2. Создание формы (Insert – User Form).
У объекта Форма – два важных свойства:
- Name (имя формы) и
- Caption (заголовок формы)

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

2

Re: Формы VBA: Как создать форму

3. Размещение элементов управления (объектов) на форме

Элементы управления на форме размещаются с помощью панели Toolbox (если панель Toolbox не появляется на экране автоматически, ее можно открыть в редакторе VBA с помощью команды View – Toolbox).

Формы VBA: Как создать форму

На форме VBA обычно размещают следующие элементы управления:
- Рамка (Frame) – предназначена для отображения границ группы элементов управления (у этого элемента есть важное свойство Caption, содержащее текст заголовка рамки).
- Текстовое поле (TextBox) – используется для ввода/вывода текста, который в последующем используется в программе, или для вывода результатов расчетов программы. Текст, введенный в поле, обычно в программе преобразуется в числовые или в строковые данные.
- Метка (Label) – используется для отображения надписей. Надпись не может быть изменена пользователем, но код программы во время ее выполнения может управлять текстом надписи.
- Кнопка (CommandButton) – в основном используется для инициирования выполнения некоторых действий, вызываемых нажатием кнопки, например запуск или остановка ее выполнения, печать результатов и т.д.
- Поле со списком (ComboBox) – применяется для хранения списка значений. ComboBox сочетает в себе функциональные возможности списка ListBox и поля TextBox. В отличии от ListBox, в элементе управления ComboBox отображается только один элемент списка. Кроме того, у него отсутствует режим выделения нескольких элементов списка, но он позволяет вводить значения, используя поле ввода, как это делает элемент управления TextBox.
- Список (ListBox) – предоставляет пользователю выбрать значение из списка данных (один или несколько одновременно).
- Флажок (CheckBox) – предназначен для выбора невзаимоисключающих вариантов.
- Переключатель (OptionButton) – позволяет выбрать один из нескольких взаимоисключающих параметров или действий. Переключатели обычно отображаются группами, обеспечивая возможность выбора альтернативного варианта.
- Выключатель(ToggleButton) – позволяет «включать» или «выключать» значение.
- Набор вкладок (TabStrip) – реализует диалоговые окна с несколькими вкладками.
- Набор страниц (MultiPage) – реализует многостраничные диалоговые окна. Заголовки страниц отображаются на вкладках. Переход от страницы к странице осуществляется выбором вкладки посредством щелчка кнопкой мыши.
- Полоса прокрутки (ScrollBar) – предназначена для «прокрутки» других элементов управления или в качестве «регулятора-ползунка» для плавного изменения какого-либо значения.
- Cчетчик (SpinButton) – предназначен для изменения какого-либо значения (часто используется в паре с текстовым полем, что позволяет отслеживать текущее значение и вводить его вручную).
- Картинка (Image) –  используется для отображения графических файлов в форматах gif, jpg и др.

Внешний вид и обзор элементов управления можно посмотреть здесь - внешняя ссылка.
Подробнее об элементах управления и их свойствах – см. внешняя ссылка.

Простые формы VBA обычно включают в себя следующие типы элементов управления: Текстовое поле, Метка, Кнопка, Рамка.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

3

Re: Формы VBA: Как создать форму

Каждый элемент управления на форме VBA может быть связан со специальной процедурой обработки. При выполнении двойного щелчка на значке элемента управления на форме в редакторе VBA открывается «заготовка» для процедуры обработки этого элемента. Например, двойной щелчок на значке первого размещенного на форме поля Метка (Label) вызывает «заготовку» процедуры следующего вида:

Private Sub Label1_Click()

End Sub

где Label1 – имя по умолчанию первого размещенного на форме поля типа Метка (для сведения: это имя находится в поле Name на панели свойств элемента управления и при необходимости его можно изменить – тогда нужно будет изменить и имя процедуры), Click – действие, активирующее процедуру (в данном случае, щелчок по элементу управления).

Переключение окна редактора VBA в режим демонстрации объектов – Shift+F7 или View – Object, переключение окна в режим кода – F7 или View – Code.

Процедуры элементов управления могут включать в себя различные операторы для работы с данными, ссылки на документ, ссылки на другие объекты, вызов подпрограмм.

Пример операторов для работы с данными внутри процедуры элемента управления:

Private Sub CommandButton1_Click() 
'процедура обработки нажатия кнопки CommandButton1
     'расчет значения переменной rez
     rez = 1000) / 60 / 60
End Sub 

Пример ссылки на документ:

Private Sub CommandButton1_Click() 
'процедура обработки нажатия кнопки
     'если документ не открыт, то выполнить открытие нового документа
     If Documents.Count = 0 Then Documents.Add 
     'размещение данных в документе в месте нахождения курсора или выделения
     Selection.Text = TextBox1.Text & " км/ч  = " & TextBox2.Text & " м/с" 
     'снять выделение текста в документе
     Selection.Collapse Direction:=wdCollapseEnd 
End Sub

Пример ссылки на другой объект:

Private Sub TextBox1_Change() 
'процедура изменения текстового поля TextBox1
     If IsNumeric(TextBox1.Text) = True And Not Val(TextBox1.Text) = 0 Then 
          'передача результата в другое текстовое поле TextBox2:
          TextBox2.Text = ((TextBox1.Text) * 1000) / 60 / 60
     End If
End Sub

Пример вызова подпрограммы, находящейся в данном модуле (<имя_подпрограммы> или Call <имя_подпрограммы>):

Private Sub CommandButton2_Click() 
'процедура обработки нажатия кнопки CommandButton2
    'запуск подпрограммы Scet с помощью оператора Call <имя_подпрограммы>
     Scet 
End Sub 

или

Private Sub CommandButton2_Click() 
'процедура обработки нажатия кнопки CommandButton2
    'запуск подпрограммы Scet с помощью оператора Call <имя_подпрограммы>
     Call Scet 
End Sub 
Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.