Главная страница
Навигация по странице:

  • 2.11.2.6. Элемент управления CheckBox (Флажок)

  • 2.11.2.7. Элемент управления ToggleButton (Выключатель)

  • 2.11.2.8. Элемент управления OptionButton (Переключатель)

  • 2.11.2.9. Элемент управления Image (Рисунок)

  • 2.11.2.10. Элемент управления ScrollBar (полоса прокрутки)

  • Наиболее часто используемые свойства элемента ScrollBars.

  • 2.11.2.11. Элемент управления SpinButton (Счётчик)

  • 2.11.2.12. Элемент управления RefEdit (Поле со свёртыванием)

  • 2.11.2.13. Элементы управления на рабочем листе

  • 2.12. Инструкции VBA 2.12.1. Оператор присваивания

  • Программирование VBA. Федеральное агентство по образованию государственное образовательное учреждение высшего профессионального образования


    Скачать 2.93 Mb.
    НазваниеФедеральное агентство по образованию государственное образовательное учреждение высшего профессионального образования
    АнкорПрограммирование VBA.pdf
    Дата24.04.2017
    Размер2.93 Mb.
    Формат файлаpdf
    Имя файлаПрограммирование VBA.pdf
    ТипУчебное пособие
    #4339
    страница7 из 13
    1   2   3   4   5   6   7   8   9   10   ...   13
    2.11.2.5. Элемент управления ListBox (список)
    Этот элемент управления предоставляет пользователю возможность выбирать только одно или несколько существующих значений из списка.
    Основные свойства, методы и события у ListBox те же, что и у ComboBox.
    Отличие состоит в том, что:
     имеется свойство MultiSelect, позволяющее пользователю выбирать несколько значений (по умолчанию это свойство отключено);
     пользователь не может вводить свои значения.
    На рис. 23 приведена форма Месяцы, в которой выбираются значения из списка месяцы при помощи элемента управления ListBox. Значения списка месяцы хранятся в блоке ячеек месяцы листа Excel.

    67
    Рис. 23. Форма Месяцы
    Имя списка месяцы задаётся в качестве параметра RowSource в табли- це Properties элемента ListBox (рис. 24).
    Рис. 24. Задание свойства параметра RowSource формы Месяцы
    Для выбора нужного месяца нужно выделить его мышью в списке и щёлкнуть по кнопке Ok. При этом будет вызвана процедура обработки события Click кнопки Выйти_Click:
    Private Sub Ok_Click()
    Range(“a1”).Value = Месяцы.Месяц.Value r = Range(“a1”).Value
    End Sub
    В результате в ячейку A1 будет помещено значение выбранного месяца и это же значение получит переменная r.
    Загрузка формы осуществляется при помощи процедуры По-
    ле_со_списком, хранящейся в стандартном модуле Module1:
    Public r As Variant
    Sub Поле_со_списком()
    Месяцы.Show

    68
    MsgBox “R=” & r
    End Sub
    После закрытия формы при помощи процедуры
    Private Sub Выйти_Click()
    Unload Me
    End Sub кнопкой Выйти на экран будет выведено значение переменной r.
    2.11.2.6. Элемент управления CheckBox (Флажок)
    Элемент управления Флажок (CheckBox) дает возможность ыклзователю осуществить выбор типа Да/Нет. Можно создать группу элементов, причём выбор значений для всех флажков в этой группе не за- висит друг от друга. Вид элемента приведен на рис. 25.
    Рис. 25. Элемент Флажок
    Основные свойства элемента Флажок:
    Caption: надпись, которая выводится рядом с элементом.
    Value:
    True – флажок установлен;
    False – флажок не установлен.
    Основное событие для этого элемента – Click. Оно возникает при измене- нии свойства Value с помощью мыши или программно. Ниже приведены процедуры, обрабатывающие событие Click. Если установлен флажок
    “Да”, то выводится сообщение “да”, а если “Нет”, то – “нет”.
    Private Sub CheckBox1_Click()
    If UserForm1.CheckBox1.Value = True Then MsgBox “да”
    End Sub
    Private Sub CheckBox2_Click()
    If UserForm1.CheckBox2.Value = True Then MsgBox “нет”
    End Sub
    2.11.2.7. Элемент управления ToggleButton (Выключатель)
    Элемент Выключатель (ToggleButton) предназначен для тех же целей, что и элемент Флажок, но имеет вид кнопки, находящейся в “нажа- том” (утопленном) или “отжатом” (отпущенном) состоянии. На рис.26 вы- ключатель “Первый” включен (значение свойства Value = True), а ыклюючатель “Второй” – отключен (значение свойства Value = False).
    Могут быть нажатыми несколько выключателей.

    69
    Рис. 26. Элемент Выключатель
    Основные свойства элемента Выключатель:
    Caption: надпись, которая выводится на элементе.
    Value:
    True – выключатель установлен;
    False – выключатель не установлен.
    Основное событие для этого элемента – Click. Оно возникает при измене- нии свойства Value с помощью мыши или программно. Ниже приведены процедуры, обрабатывающие событие Click. Если нажат выключатель
    “Первый”, то выводится сообщение “ Первый ”, а если “Второй”, то – “Вто- рой”.
    Private Sub ToggleButton1_Click()
    If UserForm2.ToggleButton1.Value = True Then MsgBox “Первый”
    End Sub
    Private Sub ToggleButton2_Click()
    If UserForm2.ToggleButton2.Value = True Then MsgBox “Второй”
    End Sub
    2.11.2.8. Элемент управления OptionButton (Переключатель)
    Элементы Переключатели (OptionButton) предназначены для выбора одного из двух взаимоисключающих значений: True (“Выбран”) и False
    (“Не выбран”) (рис.27). Они обычно объединяются в группу. При выборе нужного элемента остальные элементы в группе автоматически устанав- ливаются в состояние “Не выбран”.
    Рис. 27. Элемент Переключатель
    Для объединения переключателей в группу можно использовать элементы-контейнеры, например, Рамка. Если группа одна, то контейне- ром может служить форма. Основные свойства элемента Переключатель:
    Caption: надпись, которая выводится на элементе.
    Value:
    True – переключатель установлен;
    False – переключатель не установлен.
    Основное событие элемента Переключатель – Click. Оно возникает при изменении значения свойства Value. В группе переключателей собы- тие возникает только для того элемента, чье значение становится True.

    70
    2.11.2.9. Элемент управления Image (Рисунок)
    Элемент Рисунок (Image) предназначен для вывода содержимого графических файлов в форме. Элемент не позволяет редактировать рису- нок. Поддерживаются следующие форматы файлов: *.bmp, *.cur, *.gif, *.ico,
    *.jpg, *.wmf.
    2.11.2.10. Элемент управления ScrollBar (полоса прокрутки)
    Полоса прокрутки (ScrollBars) используется в текстовых полях, когда введенный текст полностью на экране не умещается. ScrollBar мож- но использовать как отдельный элемент управления для выбора значения из диапазона. Обычно такой элемент управления используется для выбо- ра плавно меняющихся значений.
    Главное событие для этого элемента управления – Change.
    Наиболее часто используемые свойства элемента ScrollBars.
    Max и Min – максимальное и минимальные значения, которые можно задать при помощи этого элемента управления. Возможный диапазон – от
    -32 767 до +32 767.
    LargeChange и SmallChange – величина шага ползунка при переме- щении его пользователем путем щелчка на полосе ниже ползунка или при нажатии на кнопку направления соответственно.
    Orientation – определяет расположение ползунка (вертикальное или горизонтальное). По умолчанию для этого свойства установлено значение
    1, что значит, что ориентация определяется автоматически в зависимости от конфигурации отведенного элементу управления пространства на фор- ме (что больше – длина или высота). Однако при помощи этого свойства можно и явно указать вертикальное или горизонтальное расположение ползунка.
    ProportionalThumb – определяет размер ползунка: будет ли он про- порционален размеру полосы прокрутки (по умолчанию) или фиксирован- ного размера.
    Value – главное свойство этого элемента управления. Определяет положение ползунка и то значение, которое будет возвращать этот эле- мент управления программе.
    Применение ползунка без отображения выбранной при помощи него информации не очень удобно. В простом случае значение, выбранное при помощи ползунка, можно отобразить в текстовой надписи:
    Private Sub ScrollBar1_Change()
    Label1.Caption = ScrollBar1.Value
    End Sub
    В более сложном варианте пользователь может выбирать: использовать ползунок или вводить значение в тестовом поле.

    71
    2.11.2.11. Элемент управления SpinButton (Счётчик)
    Элемент управления SpinButton (Счётчик)
    – эта та же полоса прокрутки, но без самой полосы и ползунка. SpinButton используется в тех ситуациях, когда диапазон выбираемых значений небольшой. Все свойст- ва, имеющиеся у SpinButton, совпадают со свойствами ScrollBar.
    При щелчке на соответствующей стрелке изменяется значение само- го элемента, но внешне это никак не выражается. Изменять значение дру- гого элемента с помощью элемента Счетчик можно программно.
    2.11.2.12. Элемент управления RefEdit (Поле со свёртыванием)
    Элемент управления RefEdit (Поле со свёртыванием) аналогичен по- лю ввода, но позволяет вводить в него ссылку на диапазон выбором на рабочем листе. Свойство Value возвращает эту ссылку.
    В качестве примера
    1 использования элемента управления RefEdit ис- пользуем проект, определяющий некоторые статистические параметры диапазона, а именно максимальное, минимальное значения и сумму всех значений ячеек этого диапазона. Создаётся форма, на которой располо- жены две кнопки: CommandButton1 и CommandButton2 и элемент управле- ния RefEdit (рис. 30). Кнопка CommandButton1 предназначена для задания значения диапазона элемента управления
    RefEdit,
    а
    кнопка
    CommandButton2 – для выгрузки формы. Форма, приведённая на рис. 31, загружается при выполнении процедуры СТАТИСТИКА2:
    Sub СТАТИСТИКА2()
    СТАТИСТИКА.Show
    End Sub находящейся в стандартном модуле Module1.
    Рис. 28. Проект формы
    Рис. 29. Загруженная форма
    1
    При разработке примера использованы материалы из кн.: Гарнаев А.Ю. MS Excel
    2002: разработка приложений. – СПб.: БХВ-Петербург, 2003. – C. 391–392.

    72
    Для задания диапазона необходимо сделать активным окно элемен- та управления RefEdit и выделить нужный диапазон Лист1!$A$14:$A$17
    (рис. 32). При выделении диапазона размер формы уменьшается, откры- вая ячейки для его выделения. Отсюда название элемента “Поле со свёр- тыванием”.
    Рис. 30. Выделение диапазона
    При нажатии на кнопку ok выполняется следующая процедура модуля формы.
    Private Sub CommandButton1_Click()
    Dim r As String
    Dim min As Double, max As Double, s As Double r = RefEdit1.Value
    Dim rgn As Range
    Set rgn = Range min = WorksheetFunction.min(rgn) max = WorksheetFunction.max(rgn) s = WorksheetFunction.Sum(rgn)
    MsgBox RefEdit1.Value & vbCr & _
    “min=” & min & vbCr & _
    “max=” & max & vbCr & _
    “s=” & s
    End Sub
    В этой процедуре инструкция r = RefEdit1.Value присваивает переменной r значение ссылки на диапазон, инструкция Dim rgn As Range объявляет пе- ременную rgn как объект Range, а инструкция Set rgn = Range® присваи- вает значение ячеек выбранного диапазона переменной rgn.
    Значения свойства
    Caption формы
    (Статистика), кнопки
    CommandButton1 (ok) и кнопки CommandButton2 (Выйти) задаются при инициализации следующей процедуры модуля формы:
    Private Sub UserForm_initialize()
    Me.Caption = “Статистика”
    CommandButton1.Caption = “ok”
    CommandButton2.Caption = “Выйти”
    End Sub
    Удаление формы из памяти осуществляется при нажатии кнопки
    “Выйти”. При этом возникает событие Click, обрабатываемого следующей процедурой формы:

    73
    Private Sub CommandButton2_Click()
    Unload Me
    End Sub
    При использовании данного приложения действия производятся в следующем порядке.
    1. Запускается
    (пользователем или программно) процедура
    СТАТИСТИКА2.
    2. Эта процедура загружает форму СТАТИСТИКА, при инициализа- ции которой выполняется процедура UserForm_initialize.
    3. Пользователь выделяет на рабочем листе диапазон значений, на который ссылается элемент управления RefEdit.
    4. При нажатии на кнопку
    ok вызывается процедура
    CommandButton1_Click, в результате выполнения которой осуще- ствляется подсчёт минимума, максимума и суммы величин вы- бранного диапазона при помощи свойств Min, Max и Sum объекта
    WorksheetFunction, представляющие собой одноименные функции рабочего листа и которые выводятся на экран при помощи функ- ции MsgBox (рис. 33).
    Рис. 31. Результаты выполнения приложения СТАТИСТИКА
    5. При нажатии на кнопку
    Выйти выполняется процедура
    CommandButton2_Click,в результате чего форма СТАТИСТИКА выгружается.
    2.11.2.13. Элементы управления на рабочем листе
    Выше было указано, что элементы управления можно размещать в пользовательских формах и непосредственно на рабочем листе, создавая тем самым дружественный пользователю интерфейс. Панель инструмен- тов Элементы управления отображается на рабочем листе Excel коман- дой Вид | Панели инструментов | Элементы управления (рис. 36):
    Рис. 32.
    Элементы управления на рабочем листе
    Кроме панели инструментов Элементы управления в Excel имеется похожая на неё панель Формы, набор кнопок которой практически такой же, как на панели Элементы управления (рис. 37).

    74
    Рис. 33. Панель Формы
    Удобство этой панели состоит в том, что многие её кнопки можно связать с макросами (процедурами) VBA. Кроме того, после размещения элемента управления панели Формы на рабочем листе на этом элементе выводится на русском языке её название, отражающее её назначение:
    Кнопка, Метка и т.д. Для размещения элемента управления на рабочем столе нужно нажать на соответствующую кнопку панели инструментов
    Элементы управления или Формы и с появившимся крестообразным кур- сором начертить элемент управления на рабочем листе (рис. 38 а,б).
    Рис. 34 а. Примеры элементов управления панели Формы
    Рис. 34 б. Примеры элементов управления панели Элементы управления
    Следует отметить, что задание свойств элементам управления обеих панелей различаются, т.к. панель инструментов Формы унаследована от устаревшей версии MS Ecsel 5.0 и используется преимущественно со- вместимости приложений, созданных в старых версиях.
    Размещение элементов управления производится в режиме конст- руктора, для перехода в который нужно нажать кнопку Режим конструк-
    тора панели инструментов Элементы управления.
    Как было показано выше, элементы управления являются объектами, и как любые другие объекты обладают свойствами, методами и события- ми. Значения свойств элементов управления устанавливаются как в коде, так и так и на этапе их конструирования. Для установки значений свойств на этапе конструирования нужно выбрать элемент управления и нажать кнопку Свойства панели инструментов Элементы управления. На эк- ране отобразится окно Properties (рис. 39).

    75
    Рис. 35. Окно Properties
    Код процедуры, обрабатывающий события, связанные с элементом управления, расположенном на рабочем листе (Лист1, Лист2 и т.д.), наби- рается в модуле этого рабочего листа (Лист1(Лист1), Лист2 (Лист2), и т.д.), на котором расположен элемент управления. Для входа в этот модуль нужно выбрать элемент управления и нажать кнопку Исходный текст панели инструментов Элементы управления.
    По окончании конструирования элемента управления необходимо выйти из режима конструирования, нажав кнопку Режим конструктора.
    Properties
    В качестве примера рассмотрим проектирование на рабочем листе элемента управления Кнопка. Последовательность действий следующая.
    1. Нажать кнопку Режим конструктора панели инструментов Эле-
    менты управления.
    2. Нажать кнопку панели инструментов Элементы управления и на- рисовать на рабочем листе кнопку
    , на поверхности которой появится надпись CommandButton1. При создании второго элемента управления Кнопка на её поверхности появится надпись
    CommandButton2 и т.д.
    3. Щёлкнуть по созданной кнопке правой кнопкой мыши и в появив- шемся диалоговом окне выбрать пункт
    Свойства панели инстру- ментов Элементы управления. На экране появится окно Properties.
    Установить в этом окне значение свойства Name равным КнПривет, а свойства Caption равным ПРИВЕТСТВИЕ.
    4. Выбрать созданную кнопку и щёлкнуть по кнопке Исходный текст панели инструментов Элементы управления. В результате про- изойдёт переход в редактор VBA и автоматически создана первая и последняя инструкция обработки события Click кнопки, возникающего при её нажатии (щелчке):
    Private Sub CmdПривет_Click()
    End Sub
    5. Добавить в процедуру обработки события Click функцию MsgBox, ко- торая отобразит на экране диалоговое окно с приветствием (рис. 40):

    76
    Private Sub CmdПривет_Click()
    MsgBox "Желаем вам успехов" & Chr(13) + Chr(10) & _
    "в изучении VBA!", vbExclamation
    End Sub
    Рис. 36. Результат выполнения процедуры CmdПривет_Click
    В этой процедуре выражение Chr(13) + Chr(10) вызывает возврат ка- ретки и перевод строки. Вместо него можно использовать смешанную кон- станту vbCrLf.
    Такой же самый результат можно получить, используя элемент Кноп-
    ка панели элементов Формы (рис. 37). В этом случае последовательность действий следующая.
    1. Выполнить команду Вид | Панели инструментов | Формы.
    2. Нажать кнопку панели инструментов Формы и нарисовать на ра- бочем листе кнопку, на поверхности которой появится надпись Кноп- ка1. При создании второго элемента управления Кнопка на её по- верхности появится надпись Кнопка2 и т.д.
    3. Щёлкнуть по созданной кнопке правой кнопкой мыши и в появив- шемся диалоговом окне выбрать пункт Изменить текст и ввести слово ПРИВЕТСТВИЕ, щёлкнуть правой кнопкой мыши и появив- шемся диалоговом окне выбрать пункт Завершить изменение тек-
    ста.
    4. Щёлкнуть мышью по любой ячейке рабочего листа вне области кнопки.
    5. Вставить в стандартный модуль Module1 следующую процедуру:
    Sub ПРИВЕТ ()
    MsgBox "Желаем вам успехов" & Chr(13) + Chr(10) & _
    "в изучении VBA!", vbExclamation
    End Sub
    6. Щёлкнуть правой кнопкой мыши по элементу Кнопка ПРИВЕТ на ра- бочем листе и в появившемся меню выбрать пункт Назначить мак- рос…
    7. В диалоговом окне “Назначить макрос объекту” выбрать макрос
    ПРИВЕТ.
    Если щёлкнуть теперь по кнопке ПРИВЕТ, то на экран будет выведено диалоговое окно с текстом "Желаем вам успехов в изучении VBA!".

    77
    2.12. Инструкции VBA
    2.12.1. Оператор присваивания
    Оператор присваивания – это инструкция VBA , выполняющая ма- тематическое вычисление и присваивающая результат переменной или объекту.
    Формат оператора:
    [
    1   2   3   4   5   6   7   8   9   10   ...   13


    написать администратору сайта