
- •Рег. № __м-1041__
- •Содержание:
- •Лабораторная работа №1. Изучение возможностей интегрированной среды разработки vba-приложений (excel, word)
- •Лабораторная работа №2. Отладка программ и обработка ошибок в vba
- •Лабораторная работа №3. Использование элементов управления в приложениях vba
- •Удаление элементов списка
- •Лабораторная работа №4. Использование vba при решении задач в excel
- •Выполнение лабораторной работы
- •Лабораторная работа №5. Использование vba при решении задач в Word
- •Объекты Range (диапазон) и Selection (выделение), представляющие части документа.
- •Лабораторная работа №6. ИспользованиеAccessvbAпри решении задач обработки баз данных
- •Выполнить созданное приложение, вводя данные в поля формы "Поступление" и нажимая после каждого заполнения полей кнопку "ок" (с рисунком).
Лабораторная работа №3. Использование элементов управления в приложениях vba
Основные сведения о создании форм.
VBA позволяет создавать собственные диалоговые окна (формы) самостоятельно. В проект можно добавить произвольное число форм.
При создании формы автоматически отображается набор инструментов, который позволяет разместить ряд элементов управления в форме. Однако, если эта панель убрана с экрана, то для повторного ее вывода нужно выбрать команду View\Toolbox (Вид\Панель элементов).
Краткий обзор базовых элементов управления в формах
На рисунке 1 показаны имена элементов управления, а в таблице 1 содержится их описание.
Кроме стандартного набора инструментов в распоряжении пользователя находится множество других элементов.
После размещения в форме требуемых элементов управления необходимо задать порядок перехода от одного элемента управления к другому. Порядок перехода определяет последовательность, в которой активизируются объекты при нажатии клавиши <Tab>.
Рис 1. Панель элементов
Таблица 1.
Элементы управления набора инструментов
Элементы управления |
Использование/Описание |
Поле (Edit Box) |
Отображает данные и используется для ввода информации |
Надпись(Label) |
Отображает неизменяемый текст в формах, например заголовки для других элементов управления |
Флажок(CheckBox) |
позволяет задать значение "Истина" или "Ноль" |
Поле со списком (ComboBox) |
Используется либо для выбора нужного элемента из списка, либо для ввода значения в поле |
Окончание табл. 1.
Элементы управления |
Использование/Описание |
Список (ListBox) |
Позволяет создать список, содержащий требуемые значения |
Кнопка (CommandButton) |
Создает кнопку, при нажатии которой выполняется команда |
Переключатель (OptionButton) |
Используется для предоставления выбора одного варианта из многих |
Рамка (Frame) |
Позволяет установить графическую или функциональную группировку элементов управления |
Счетчик (Snipper) |
Используется для увеличения или уменьшения числовых значений |
Рисунок (Image) |
Отображает в форме импортированный рисунок |
Выключатель (Toggle) |
Создает кнопку, имеющую два состояния: включено и выключено |
Элемент управления TextBox (Поле) позволяет ввести в форму информацию, которую затем можно использовать в программе или вывести данные.
После создания элемента управления рекомендуется сразу присвоить ему имя, иначе ему будет присвоено имя по умолчанию. При присваивании названий полей рекомендуется придерживаться следующего правила: txtИмяОбъекта.
Установка и получение содержимого поля
Типичными задачами при работе с полем является установка и получение содержимого. В программе необходимо обрабатывать текст, который пользователь ввел в элемент управления, но также часто бывает нужно вывести значение, которое извлечено из базы данных.
Свойство Value используется как для установки, так и для получения содержимого поля. Данное свойство имеет тип Variant.
Например, в поле заносится значение "ABCDEF":
txtMyControl.Value="ABCDEF"
или в поле заносится число 100:
txtMyControl.text=100
Для получения значения элемента управления TextBox можно использовать следующий фрагмент:
Dim varResult As Variant
varResult= txtMyControl.Value
Запрет доступа к полю
В некоторых случаях требуется запретить пользователю изменять содержимое поля, например, если объект TextBox используется для отображения доступной только для чтения информации, такой как имена файлов. Чтобы отключить поле, требуется присвоить его свойству Enabled значение False. Задавая для свойства Enabled значение True, можно разрешить изменение содержимого поля.
Пример использования свойства Enabled:
txtMyControl.Enabled = False
или
txtMyControl.Enabled = True
Получение и установка выделенного в поле текста
Пользователь выделяет символы в элементе TextBox либо перетаскивая указатель мыши по тексту, либо используя клавиши <Left> или <Right>, одновременно удерживая нажатой клавишу <Shift>. Для хранения выбранного в поле текста используется свойство SelText.
Например,
Dim varSelected as Variant
VarSelected = txtMyControl.SelText
Для установления выделенного текста в программе используются свойства SelStart и SelLength элемента управления TextBox.
Например, программа выделяет слово "был":
Dim varText as text
varText = "У Мэри был ягненок"
txtMyControl.Value = varText
txtMyControl.SelStart =8
txtMyControl. SelLength =3
Автоматическая установка размеров поля
Для автоматической установки ширины поля можно присвоить свойству поля AutoSize значение True. При этом ширина поля уменьшается или увеличивается в зависимости от числа находящихся в нем символов.
Пример использования свойства AutoSize:
txtMyControl.AutoSize = True
Элемент управления Label (Надпись) используется для вывода текста в форме, например, заголовка, не имеющих собственного свойства Caption объектов формы, таких как поле или рисунок. В этом случае надпись находится около элемента управления, указывая на назначение элемента.
Добавление надписи в форму
Чтобы указать имя объекта Label, нужно нажать клавишу <F4> сразу после создания надписи, а затем ввести название объекта в поле Имя окна свойств.
Задание текста надписи
Наиболее важным свойством элемента управления Label является свойство Caption, содержащее текст надписи. Иногда требуется изменить текст надписи во время выполнения программы
Пример использования свойства Caption в программе:
MyLabelControl.Caption = "Адрес"
Элемент управления CommandButton (Кнопка) инициирует выполнение некоторого действия, например, запуск, остановку или прерывание процесса. Для указания имени объекта CommandButton нужно нажать клавишу <F4> сразу после создания кнопки, а затем ввести название объекта в поле Имя окна свойств.
Форматирование кнопки
Задание текста, выводимого на кнопке, устанавливается с помощью свойства Caption.
Например:
cbMyControl.Caption = "Нажми меня!"
Для получения текста, выведенного на кнопке:
Dim str_MyCaption As String
str_MyCaption = cbMyControl.
Если весь текст не умещается на поверхности кнопки, то он будет усекаться. Для автоматического изменения размеров объекта CommandButton используется свойство AutoSize:
cbMyControl.AutoSize = True
Задание кнопки по умолчанию
Чтобы назначить в форме кнопку по умолчанию, нужно присвоить ее свойству Default значение True. После этого свойству Default остальных кнопок формы автоматически присваивается значение False.
Например,
CbMyControl.Default=True
Нажатие кнопки
С нажатием кнопки можно связать выполнение некоторого действия, если назначить ее событию Click (Нажатие кнопки) процедуру обработки. Процедура обработки события Нажатие кнопки не имеет параметров. Например:
Private Sub cbMyButton_Click()
Debug.Print "кнопка нажата"
End Sub
Изменение состояния кнопки
Иногда требуется запретить пользователю нажатие кнопки, если оно приведет к нежелательным действиям. При запрете доступа кнопка становится серой. Для отключения объекта CommandButton используется свойство Enabled.
Пример программы показывает, как заблокировать кнопку, инициирующую печать, если принтер не работает:
Public Sub CheckPrinter()
If PrinterNotReady() Then
cbPrint.Enabled=False
GetPrinterReady()
End If
End Sub
Элемент управления ListBox (Список) применяется для хранения списка значений. В списке пользователь выбирает один или несколько элементов, которые затем используются в программе.
Задание выделенных элементов списка
В VBA имеется возможность задать число элементов в списке, которые можно выбрать одновременно. Если допускается выделение нескольких пунктов, то имеется возможность указать также, что выбранные элементы списка расположены либо последовательно, либо их порядок является произвольным. Способ выбора элементов определяется значением свойства MultiSelect. Его можно задать как в окне свойств, так и в программе. Описанным вариантам выделения соответствуют следующие значения:
Вариант |
Значение |
Константа |
Один элемент |
0 |
FmMultiSelectSingle |
Последовательные элементы |
2 |
FmMultiSelectExtended |
Произвольно расположенные элементы |
1 |
FmMultiSelectMulti |
Пример задания варианта выбора:
ListBox1.MultiSelect= fmMultiSelectExtended
Добавление элемента списка
Для добавления элементов списка используется метод AddItem. Для данного метода требуется задать параметр, который определяет строку с названием пункта:
ListBox.AddItem строка_элемента
Чтобы заполнить список числами, обычно используют цикл For ...Next:
Public Sub PopulateList()
For I=1 To 100
ListBox1.AddItem "Номер элемента: " + str$(I)
Next
End Sub
Определение выделенного элемента списка
Свойство Text элемента управления ListBox содержит выделенный в объекте пункт, если в списке задан выбор только одного элемента. Если в элементе ListBox допускается выбор нескольких элементов, то свойство Text равно пустой строке. Пример вывода выбранного элемента списка в окне отладки:
Debug.Print ListBox1.Text
Кроме этого, для определения выбранного в списке элемента используется свойство ListIndex. Оно содержит номер выделенного пункта. Для списков, в которых можно выбрать несколько элементов, в свойстве ListIndex хранится номер выделенного пункта:
Debug.Print "В списке выбран элемент: "
Debug.Print ListBox1.ListIndex
Определение нескольких выделенных элементов списка
При определении выделенных элементов в элементе управления ListBox, свойство MultiSelect которого равно FmMultiSelectExtended или FmMultiSelectMulti, требуется проверить каждый пункт, чтобы выявить, выбран он или нет. Для этого используется свойство списка Selected, которое при указании индекса проверяемого пункта возвращает результат проверки: True или False.
ListBox.Selected (индекс_пункта) = Boolean
Свойство ListCount содержит общее число элементов в списке ListBox1. Нижняя граница индексов этого объекта равна 0, поэтому требуется просмотреть все пункты, начиная с нулевого и заканчивая элементом с номером ListCount минус 1, который является номером последнего пункта в списке. Свойство List (индекс) объекта Listbox, в котором допускается выбор нескольких элементов, возвращает по номеру пункта его текст.
Пример определения нескольких выделенных элементов списка:
Private Sub CommandButton1_Click()
PopulateList1
End Sub
Private Sub CommandButton2_Click()
CopySelected
End Sub
Private Sub CopySelected()
For i = 0 To (Listbox1.ListCount - 1)
If Listbox1.Selected (i) Then
Listbox2.AddItem Listbox1 .List (i)
End If
Next
End Sub
Public sub PopulateList1()
For i = 0 To 100
ListBox1.AddItem "Номер: " & Str$ (i)
Next
End Sub