Интегрированная среда разработки VBA
.pdfОператор выбора Select Case
Оператор Select Case удобно использовать, когда в зависимости от значения некоторого выражения, имеющего конечное множество допустимых значений, необходимо выполнить разные действия. Он также относится к условным операторам, но имеет другой вид:
Select Case ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ Case ЗНАЧЕНИЯ_1
ОПЕРАТОРЫ_1 Case ЗНАЧЕНИЯ_2
ОПЕРАТОРЫ_2
. . .
Case ЗНАЧЕНИЯ_N ОПЕРАТОРЫ_N
[Case Else
ИНАЧЕ_ОПЕРАТОРЫ]
End Select
ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ может иметь любой скалярный тип, кроме вещественного. ЗНАЧЕНИЯ состоят из произвольного количества значений или диапазонов, отделенных друг от друга запятыми. Тип ЗНАЧЕНИЙ должен совпадать с типом
ПРОВЕРЯЕМОГО_ВЫРАЖЕНИЯ.
Сначала вычисляется ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ. Если его значение совпадает с одним из значений ЗНАЧЕНИЯ_1, то выполнятся ОПЕРАТОРЫ_1 и управление передается оператору, стоящему после End Select. Если его значение не совпадает ни с одним из значений ЗНАЧЕНИЯ_1, то выполнятся ИНАЧЕ_ОПЕРАТОРЫ и управление передается оператору, стоя-
щему после End Select.
Например, необходимо написать часть программы, определяющей значение переменной S в зависимости от значения переменной n. Для этого применяют следующий код (см. рис. 4.3):
50
Dim n as integer Dim s as string N=1997
Selest Case n Case 1960
S=”Год рождения”
Case 1961 to 1966 S=”Дошкольныегоды”
Case 1967 to 1977, 1981 to1985 S=”Годы учебы”
Case else
S=”Годы работы”
End Selest
‘Результат S=”Годы работы”
Рис. 4.3. Пример блок-схемы оператора выбора Selest Case
Контрольные вопросы
1.Какова однострочная форма условного оператора?
2.Как работает условный оператор? Что такое условие?
3.Приведите многострочную форму условного оператора.
4.Как выглядит условный оператор, в котором проверяется несколько условий?
5.Когда удобно использовать оператор выбора?
6.Каков синтаксис оператора выбора?
7.Как работает оператор выбора?
Примеры
Пример 1
Вычислить значение выражения дляразличныхисходных данных.
1.В ячейку А1 ввести текст «Исходные данные», в ячейку А2 ввести текст «Х=», в ячейку В2 ввести значение Х.
2.В ячейку C1 ввести текст «Результат при х>0», в ячейку D1 ввести текст «Результат при х<=0».
3.В редакторе VBA ввести текст программы:
51
Sub IfThen ()
X = Worksheets(1).Range("B2").Value If X > 0 Then
f = X / 2 Worksheets(1).Range("C2").Value = f Worksheets(1).Range("D2").Value = "" Else
f = (X + 1) / 2: Worksheets(1).Range("D2").Value = f Worksheets(1).Range("C2").Value = ""
End If
MsgBox "Значение выражения =" & f, vbExclamation, "Ре-
зультат"
End Sub
Пример 2
Найти наибольшее значение среди трех величин A, B и C. Возникает следующая идея алгоритма решения этой задачи: сна-
чала нужно найти большее значение среди A и B и присвоить его какой-то переменной, например, D. Затем найти большее среди D и C. Это значение можно присвоить той же переменной D.
Решение задачи сводится к двукратному применению алгоритма нахождения большего из двух. В структуре алгоритма содержится два последовательных ветвления: первое– полное, второе– неполное:
Sub Maximum()
Dim a, b, c, d As Integer
a = InputBox("Значение a", "Исходные данные", 1) Worksheets(1).Range("a2") = a
b= InputBox("Значение b", "Исходные данные", 2) Worksheets(1).Range("b2") = b
c= InputBox("Значение c", "Исходные данные", 3) Worksheets(1).Range("c2") = c
If a > b Then d = a Else d = b If c > d Then d = c
Worksheets(1).Range("d1") = "Максимум" Worksheets(1).Range("d2") = d
MsgBox "Максимум из трех =" & d, vbInformation, "Задача решена"
End Sub
52
Пример 3
В старояпонском календаре был принят двенадцатилетний цикл. Годы внутри цикла носили названия животных: крысы, быка, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, петуха, собаки и свиньи. Написать программу, которая по номеру года определяет его название в старояпонском календаре, если известно, что 2008 год был годом крысы – началом очередного цикла.
Поскольку цикл является двенадцатилетним, нужно поставить в соответствие название года остатку от деления этого года на 12. При этомнеобходимоучесть, что остатокотделения2008 на12 равен4.
Текст программы будет выглядеть следующим образом:
Option Explicit
Sub Goroskop()
Dim Year As Integer Dim s As String
Year = InputBox("Введите год", "Исходные данные") Select Case Year Mod 12
Case 0
s = "Год Обезьяны" Case 1
s = "Год Петуха" Case 2
s = "Год Собаки" Case 3
s = "Год Свиньи" Case 4
s = "Год Крысы" Case 5
s = "Год Быка" Case 6
s = "Год Тигра" Case 7
s = "Год Зайца" Case 8
s = "Год Дракона" Case 9
53
s = "Год Змеи" Case 10
s = "Год Лошади" Case 11
s = "Год Овцы
End Select
MsgBox s, vbQuestion, "Результат"
End Sub
Пример 4
Найти наименьшее из двух действительных чисел, используя оператор выбора. Здесь селектором является логическая величина:
Option Explicit
Sub Minimum()
Dim X As Single, Y As Single, Min As Single
X= InputBox ("Введите первое число", "Ввод чисел для сравнения")
Y= InputBox ("Введите второе число", "Ввод чисел для сравнения")
Select Case X < Y Case True
Min = X Case False
Min = Y
End Select
MsgBox "Наименьшее из двух чисел: " & Min, , "Результат сравнения"
End Sub
Пример 5
По введенному с клавиатуры числу x определить, какое из усло-
вий выполняется: x = 1 или x = –1; x [3; 5]; x > 5. Выдать словесный ответ. В случае невыполнения условий, так же сообщить об этом.
В этой программе использованы различные формы записи условий после слова Case:
54
Option Explicit
Sub Diapason()
Dim X As Single, S As String
X = InputBox("Введите число", "Ввод") Select Case X
Case 1, -1
S = "выполнено первое условие" Case 3 To 5
S = "выполнено второе условие" Case Is > 5
S = "выполнено третье условие" Case Else
S = "ни одно из условий не выполняется"
End Select
MsgBox "Проверка показала:" & Chr(13) & S, , "Результат"
End Sub
Во всех заданиях исходные данные и результаты сохранять на листах рабочей книги Excel, а также для ввода и вывода информации использовать диалоговые окна.
Задания
Задание 1
Создать программы для решения задачи (по вариантам, номер варианта выдает преподаватель).
Задание 2
Создать программу для решения задачи с использованием оператора Select Case (по вариантам, номер варианта выдает преподаватель.
55
Лабораторная работа № 5
СОЗДАНИЕ СОБСТВЕННЫХ ДИАЛОГОВЫХ ОКОН
Цели работы: изучить свойства, методы, события формы и элементов управления; приобрести практические навыки работы с формами, размещения элементов управления в форме, их редактирования.
Теоретические сведения
Форма, ее свойства, методы и события
Форма – это главный объект, образующий визуальную основу приложения. Окно формы используется для создания диалоговых окон разрабатываемых приложений в VBA. В приложении может быть как одна, так и несколько форм.
Как и любой другой объект VBA, форма имеет набор свойств, основные из которых приведены в табл. 5.1. Для получения справки по любому свойству достаточно выделить его в окне свойств и нажать F1.
|
Таблица 5.1 |
|
Основные свойства формы |
|
|
Свойство |
Описание |
BackColor |
Цвет фона для формы |
BorderStyle |
Определяет тип границы, окружающей форму |
Caption |
Текст, который выводится в заголовке формы |
Font |
Определяет тип и вид шрифта в форме |
Height |
Определяет высоту формы в твипах |
(Name) |
Имя объекта, для программы VBA |
Width |
Определяет ширину формы в твипах |
Свойства можно изменять в режиме конструирования в окне свойств, либо программно в режиме выполнения. Например, в ходе выполненияпрограммыможно изменить заголовокформыкомандой:
56
frmForm1.Caption = "Привет"
Программы в ОС Windows управляются событиями. Каждый раз, когда нажимается кнопка, перемещается мышь, изменяются размеры, формы и другие свойства объектов, ОС Windows генерирует сообщение. Сообщение доставляется соответствующему объекту, например, форме, а та генерирует соответствующее событие. Следовательно, можно составить фрагмент программы, в котором объект будет реагировать на событие определенным образом, т. е. любому стандартному событию соответствует определенная процедура. Чтобы просмотреть события связанные с формой, необходимо в режиме конструирования дважды щелкнуть на ней – появится окно программы, в котором нужно щелкнуть на списке Процедура. В табл. 5.2 приведены наиболее часто используемые события.
|
Таблица 5.2 |
|
|
Основные события форм |
|
|
|
|
Событие |
Описание |
|
Initialize |
Происходит во время конфигурации и до загрузки |
|
формы в память |
||
|
||
Activate |
Происходит после загрузки формы в память |
|
Deactivate |
Происходит, если форма перестает быть активной |
|
Click |
Происходит при нажатии левой кнопки мыши |
|
на форме |
||
|
Следующий пример изменяет заголовок формы при активизации, и уменьшаетразмерформыпослещелчкалевойкнопкоймышинаформе.
Private Sub UserForm_Activate()
frmForm1.Caption = "Щелчок на форме уменьшает ее
размеры" End Sub
Private Sub UserForm_Click() frmForm1.Width = frmForm1.Width / 2 frmForm1.Height = frmForm1.Height / 2
frmForm1.Caption = "ПОПРОБУЙ ЕЩЕ РАЗ."
End Sub
57
Также форма обладает набором методов и инструкций.
Метод определяет действие, которое может быть выполнено с объектом.
Инструкция инициирует действие. Она может выполнить метод или функцию.
В табл. 5.3 и 5.4 приведены наиболее часто используемые методы и инструкции для работы с формами.
|
|
Таблица 5.3 |
|
|
Основные методы форм |
|
|
|
Метод |
|
Описание |
|
Скрывает объект UserForm, но не выгружает его |
|
Hide |
||
Show |
Выводит на экран объект UserForm |
|
|
|
Таблица 5.4 |
|
|
Основные инструкции форм |
|
|
|
Инструкция |
Описание |
|
Load |
|
Загружает объект UserForm, но не отображает |
|
его на экране |
|
|
|
|
Unload |
|
Удаляет объект UserForm из памяти |
В следующем примере предполагается, что в проекте созданы две формы frmForms. При запуске проекта происходит событие
Initialize для формы frmForm1, форма frmForm2 загружается и выводится на экран. Когда при помощи мыши выбирается frmForm2, это форма делается невидимой, появляется форма frmForm1. Если же выбирается frmForm1, то frmForm2 появляется вновь.
'Событие Initialize формы frmForm1.
Private Sub UserForm_Initialize()
Load frmForm2 frmForm2.Show
58
End Sub
'Событие Click для формы frmForm2
Private Sub UserForm_Click() frmForm2.Hide
End Sub
'Событие Click для формы frmForm1
Private Sub UserForm_Click() frmForm2.Show
End Sub
Форма в проект добавляется с помощью команды Insert– UserForm или нажатием кнопки Вставить объект–UserForm.
В результате на экран выводится незаполненная форма с Пане-
лью элементов. Также Панель элементов отображается на экране либо выбором команды View–Toolbox, либо нажатием кнопки Па-
нель элементов
а панели инструментов Standard. Используя Панель элементов, из незаполненной формы можно сконструировать любое требуемое для приложения диалоговое окно. Для создания элементов управления служат все кнопки панели инструментов,
за исключением кнопки Выбор объекта
. Щелкнув по кнопке Выбор объекта, можно выбрать уже созданный в форме элемент управления для последующего его редактирования (изменения размеров или редактирования).
Для каждого объекта проекта необходимо определить его имя. В соответствии с общепринятыми соглашениями об именах объектов первые три символа имени должны отражать вид элемента, а остальные символы – назначение (см. табл. 5.5 и 5.6).
Таблица 5.5
Список основных элементов управления и соответствующих кнопок панели элементов
Элемент |
|
Кнопка, |
Элемент |
|
Кнопка, |
|
Имя |
его |
Имя |
его |
|||
управления |
управления |
|||||
|
создающая |
|
создающая |
|||
Поле |
TextBox |
|
Переключатель |
OptionButton |
|
|
|
|
|
|
|
|
59
