Progress-servis55.ru

Новости из мира ПК
36 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba excel работа с формами

Канал в Telegram

Вы здесь

Создание формы в Excel на VBA (+видео)

Для чего нужны формы в VBA?

Форма это некий контейнер, в котором размещаются различные объекты и элементы управления, из которых создается интерфейс приложения, т.е. проще говоря, форма — это холст, на котором разработчик рисует лицо своей программы. С формами Вы сталкиваетесь постоянно. Например, окно браузера, в котором Вы читаете эту страницу, так же является формой с элементами управления и отображения информации. Характерный набор кнопок для формы это «Свернуть», «Развернуть/Свернуть окно», «Закрыть».

В операционных системах (например Windows, MacOS, Linux) содержатся библиотеки, в которых уже заложены функции построения стандартных форм и объектов управления, что значительно упрощает разработку интерфейса большинства прикладных приложении. Такой подход позволяет сделать приложения универсальными в плане переноса на другие рабочие станции (ПК) и легче т.к. нет необходимости «носить» все библиотеки с собой. Эти функции используются различными средами разработки.

В VBA Excel формы позволяют организовать полноценный интерфейс для взаимодействия с пользователем, конечно, имеется много ограничений и неудобств.

Перейдем теперь к практической части создания и конструирования форм.

Добавляются формы в VBA просто, открываем редактор Visual Basic (Alt+F11), в главном меню редактора Insert – UserForm. После чего должна появиться форма, а в структуре книги (окно View — Project Explorer) появится папка «Forms» в которой содержится UserForm1

Конструируется форма в VBA очень просто, выбираем на панели объектов «Toolbox» (View — Toolbox) нужный объект, например «CommandButton»

переходим на форму, жмем ЛКМ (Левая кнопка мыши) и не отпуска тянем до нужных размеров.

Toolbox (Инструменты) — это панель содержащая необходимые для разработки интерфейса объекты (Кнопки, Метки, полосы прокрутки и т.д.). В панель Toolbox можно добавлять новые объекты, для этого щелкните ПКМ по свободной области панели и выберите из контекста «Additional Controls. «. В открывшемся окне выбираете необходимые компоненты.

Учтите, что наборы компонентов могут отличаться на различных ПК и соответственно, приложения, написанные в Excel, не будут работать или будут работать, но с ошибками. Обратите внимание, если выбрать какой-либо объект, например «Кнопку», то в окне «Properties» (F4), появится список доступных свойств у данного объекта. Это очень удобно, когда необходимо ввести, например метку, поменять цвет или задать более точный размер и т.д. Поэкспериментируйте с созданием/изменением объектов и самой формой.

Как показать (запустить) форму на VBA?

После того как форма была создана, ее необходимо при запуске макроса открыть. Как это сделать?
Все очень просто. Создайте в книге модуль (как это сделать, описано в этой статье) следующего содержания:

Sub ЗапускФормы()
UserForm1.show
End Sub

Запускаете макрос «ЗапускФормы».
Команда UserForm1.show — дословно UserForm1.Показать, где UserForm1 это имя нашей формы установленное в поле Name. Show(Показать) — метод формы. Для скрытия форм используется метод Hide (Скрыть).

На этом все. Ниже, Вы можете посмотреть видео демонстрирующее все вышеописанное.

Прикрепленный файл: form_vba.zip

Видео: Создание форм в Excel на VBA

Vba excel работа с формами

Width

frmForm1.Caption = «������»

������� 5.2. �������� ������� ����

Initialize

Activate

Deactivate

Click

Private Sub UserForm_Activate()

frmForm1.Caption = «������ �� ����� ��������� � �������»

End Sub

Private Sub UserForm_Click()

frmForm1.Height = frmForm1.Height / 2

frmForm1.Caption = «������ ��� ��� ���!»

End Sub

������� 5.3. �������� ������ ����

Читать еще:  Excel рабочие дни между датами

Unload

Private Sub UserForm_Initialize()

Load frmForm2

frmForm2.Show

End Sub

Private Sub UserForm_Click()

frmForm2.Hide

End Sub

Private Sub UserForm_Click()

frmForm2.Show

End Sub

�������� ����������� ��������� �� ����� ����������� � ������� ������ ������������, ������� ��������� �� ����� �������� ��� ������ ��������� (���. 5.2).

frm

frmMyForm

lbl

lblInfo

txt

txtInput

cmd

cmdExit

chk

chkSound

opt

optLevel

lsb

lsbTypes

fra

fraChoices

vcb

vcbSpeed

pic

picChema

BackColor

Caption

Enabled

ForeColor

Picture

PicturePosition

Visible

Enabled

ForeColor

MaxLength

PasswordChar

txtResult.Text=» «

������� 5.8. �������� �������

Caption

ForeColor

Picture

PicturePosition

������� 5.9. �������� ������

ListIndex

Private Sub UserForm_Initialize()

List1.AddItem «����»

List1.AddItem «����»

List1.AddItem «�����»

List1.AddItem «������»

List1.AddItem «�������»

End Sub

Private Sub List1_DblClick()

List2.AddItem List1.Text

List1.RemoveItem

List1.ListIndex

End Sub

Private Sub List2_dblClick()

List1.AddItem List2.Text

List2.RemoveItem

List2.ListIndex

5.2 Создание форм и самые важные свойства и методы форм

Создание форм VBA, свойства форм, методы Show(), Hide(), команда Unload, событие Initialize()

Создать форму очень просто: для этого достаточно в редакторе Visual Basic щелкнуть правой кнопкой мыши по проекту (то есть документу) в окне Project Explorer и в контекстном меню выбрать Insert -> User Form. Откроется окно дизайнера форм (Form designer), в котором будет представлено пустое серое окно формы (по умолчанию она будет называться UserForm1) и рядом — Toolbox, панель с набором элементов управления (см. рис. 5.1).

Рис. 5.1 Все готово для работы с формой

Если у вас включен показ окна свойств (он включается по клавише ), то в этом окне будут представлены свойства формы. Переход на код для этой формы (по умолчанию открывается событие Click) — по клавише , возврат обратно в окно дизайнера форм — по + .

Очень удобно, что для форм и элементов управления можно настраивать свойства при помощи графического интерфейса окна свойств — резко уменьшается количество программного кода, которое нужно писать вручную.

Некоторые самые важные свойства форм (кроме ShowModal, все они применимы и для других элементов управления):

  • свойство (Name) — определяет имя формы. Пользователь, скорее всего, его никогда не узнает. Имя формы используется только программистом в программном коде для этой формы (и в окнах редактора Visual Basic). После создания формы ее имя, предлагаемое по умолчанию (UserForm) рекомендуется заменить на что-либо более значимое, чтобы было проще ориентироваться в программе (это относится ко всем элементам управления);
  • свойство Caption — определяет заголовок формы (по умолчанию совпадает с именем формы). Рекомендуется ввести строку, которая будет напоминать пользователю о назначении формы (например, «Выбор типа отчета»);
  • свойство Enabled — если установлено в False, пользователь работать с формой не сможет. Используется для временного отключения формы, например, пока пользователь не обеспечит какие-то условия для ее работы;
  • свойство ShowModal — если установлено в True (по умолчанию), пользователь не может перейти к другим формам или вернуться в документ, пока не закроет эту форму. В версиях до VBA6 поддерживались только модальные формы.

Большая часть основных свойств относится к внешнему виду, размерам и местонахождению окон.

Самые важные методы форм:

В процессе редактирования формы (из окна редактора Visual Basic) форму можно запускать по нажатию клавиши . После того, как форма будет готова, вы должны обеспечить запуск этой формы в документе. Для запуска формы нужно воспользоваться методом Show():

Если форма уже была загружена в память, она просто станет видимой, если еще нет — то будет автоматически загружена (произойдет событие Load).

Читать еще:  Датчик случайных чисел в excel

Саму эту команду, можно вызвать, например:

  • из обычного макроса, привязанного к кнопке или клавиатурной комбинации;
  • из автозапускаемого макроса (макроса с названием AutoExec для Word);
  • из кода для элемента управления, расположенного в самом документе (например, CommandButton) или на другой форме — для перехода между формами;
  • поместить ее в обработчик события Open для документа Word или книги Excel, чтобы форма открывалась автоматически при открытии документа.

После того, как пользователь введет/выберет нужные данные на форме и нажмет на требуемую кнопку, форму необходимо убрать. Можно для этой цели воспользоваться двумя способами:

спрятать форму (использовать метод Hide()), например:

форма будет убрана с экрана, но останется в памяти. Потом при помощи метода Show() можно будет опять ее вызвать в том же состоянии, в каком она была на момент «прятанья», а, можно, например, пока она спрятана, программно изменять ее и расположенные на ней элементы управления. Окончательно форма удалится из памяти при закрытии документа;

если форма больше точно не потребуется, можно ее удалить из памяти при помощи команды Unload:

Остальные методы относятся либо к обмену данными через буфер обмена (Copy(), Cut(), Paste()), либо к служебным возможностям формы ( PrintForm(), Repaint(), Scroll()).

Важнейшая концепция VBA — события. Событие (event) — это что-то, что происходит с программой и может быть ей распознано. Например, к событиям относятся щелчки мышью, нажатия на клавиши, открытие и закрытие форм, перемещение формы по экрану и т.п. VBA построен таким образом, чтобы создавать на нем программы, управляемые событиями (event-driven). Такие программы противопоставляются устаревшему процедурному программированию.

Самые важные события форм:

  • Initialize — происходит при подготовке формы к открытию (появлению перед пользователем). Обычно в обработчик для этого события помещается код, связанный с открытием соединений базы данных, настройкой элементов управления на форме, присвоение им значений по умолчанию и т.п.
  • Click (это событие выбирается по умолчанию) и DblClick — реакция на одиночный и двойной щелчок мыши соответственно. Для формы это событие используется не так часто. Обычно обработчик щелчков используется для кнопок (элементов управления CommandButton). По причине простоты мы использовали это событие для демонстрации нашего кода.
  • Error — это событие используется при возникновении ошибки в форме, используется как возможность предоставить пользователю исправить сделанную им ошибку. Подробнее — в специальном модуле, посвященном ошибкам и отладке.
  • Terminate — событие используется при нормальном завершении работы формы и выгрузке ее из памяти (например, по команде Unload). Обычно используется для разрыва открытых соединений с базой данных, освобождения ресурсов, протоколирования и т.п. Если работа формы завершается аварийно (например, запустившее форму приложение выдало команду End), то это событие не возникает.
  • остальные события связаны либо с изменением размера окон, либо с нажатиями клавиш, либо с активизацией (получением фокуса)/деактивизацией (потерей фокуса).

Поскольку форма — это во многом просто контейнер для хранения других элементов управления, главное ее событие — Initialize. Все остальные события обычно используются не для формы, а для расположенных на ней элементов управления.

Некоторые моменты, связанные с созданием и редактированием форм:

  • Формы, создаваемые в Microsoft Access, не являются стандартными, как формы остальных приложений Office, и набор свойств и методов у них несколько отличается. Тем не менее по функциональности они практически одинаковы.
  • Иногда для обсуждений формы удобно распечатать. Для этого предусмотрено специальное диалоговое окно, которое можно вызвать по нажатию кнопки +

(при выбранной форме в дизайнере).

  • Если все нужные вам элементы управления трудно уместить на одной форме (даже большого размера), в вашем распоряжении два варианта: воспользоваться двумя формами (переходя между ними при помощи методов Show() и Hide(), подвязанных к элементам управления) или воспользоваться несколькими вкладками для формы. Для этой цели в вашем распоряжении — специальный элемент управления Multipage.
  • Vba excel работа с формами

    Форма в VBA это каркас приложения. Как добавлять форму в Ваш проект смотрите «Шаг 15 — Пользовательские формы». В основном события формы по ее инициализации и деинициализации разворачиваются в таком порядке:

    Но форма в VBA и VB различаются. Давайте сравним:

    VBA

    VB

    UserForm_Initialize()

    Form_Initialize()

    Нет

    Form_Load()

    UserForm_Activate()

    Form_Activate()

    UserForm_Deactivate()

    Form_Deactivate()

    UserForm_QueryClose(Cancel As Integer,CloseMode As Integer)

    Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

    нет

    Form_Unload(Cancel As Integer)

    UserForm_Terminate()

    Form_Terminate()

    Получается, что событие Load и Unload в VBA не обрабатываются.

    Событие Initialize

    Событие Initialize (Инициализация) обычно используется для подготовки к работе приложения или формы UserForm. Переменным присваиваются исходные значения, а положение или размеры элементов управления могут быть изменены для согласования с данными, заданными при инициализации. Это событие появляется до загрузки формы и ее отображения. Это событие появляется во время загрузки формы. Давайте в него напишем код:

    А теперь две функции, которые вызывают Load:

    В результате окно с информацией о инициализации будет на экране два раза. Так же это событие сгенерирует событие Show, так как первый раз для работы с формой ее нужно загрузить. Еще это событие может быть вызвано, если в форме определена функция общего назначения. Вызов этой функции опять приводит к загрузке формы.

    А вот так можно вызвать:

    Итак, событие Intialize вызывается только один раз для формы перед ее загрузкой.

    Событие Load

    Нет ее в VBA, а вообще в VB здесь можно что-то сделать перед выводом формы на экран.

    Событие Activate и Deactivate

    Событие Activate происходит, когда объект становится активным окном. А становится активным окном он может в двух случаях. Это в результате Show, когда форма становится видимой на экране и в результате получения фокуса. Событие Deactivate (Деактивизация) происходит, когда объект более не является активным окном. Эти события генерируются только при переключении между окнами одного приложения. Если вы перейдете в другую программу и вернетесь в Excel, то эти события не будут сгенерированы.

    Событие QueryClose

    Это событие генерируется для того, чтобы получить у пользователя разрешение на закрытие формы. В зависимости от кода возврата форма закрывается или нет.

    Событие Unload

    Нет его, точно так же как и Load, а вообще используется, если надо что-либо делать при выгрузке формы, например сохранить настройки пользователя.

    Событие Terminate

    Данное событие происходит, когда все ссылки на экземпляр объекта удаляются из памяти с помощью присвоения всем переменным, которые ссылаются на данный объект, состояния Nothing или когда последняя ссылка на объект выходит за пределы области определения. Это событие идет вслед за Unload.

    голоса
    Рейтинг статьи
    Ссылка на основную публикацию
    Adblock
    detector