4. ИНСТРУКЦИИ VBA
4. 1. Инструкции комментариев Используются для вывода текста сообщений. Могут начинаться с ключевого слова REM или с апострофа‘. Например: Rem Описание переменных или ‘ Описание переменных
Обратите внимание! Комментарии с апострофом видны на экране монитора и печатаются на бумаге при распечатке листинга. Комментарии с ключевым словом Rem видны на экране, но отсутствуют в листинге!
4. 2. Инструкции (операторы) присваивания Синтаксис оператора для переменных: Имя переменной = Выражение Работает так: вычисляется значение выражения в правой части оператора, и результат присваивается переменной, стоящей в левой части. Например: X = 3. 14 Y = Cos(X) Z = Y^6
Синтаксис оператора присваивания для объектов SET Имя объекта = Описание объекта Например: Dim Новый As Object Set Новый = Work. Sheets(“Новый”) Или Set Новый = Work. Sheets(“Лист 1”)
4. 3. ВСТРОЕННЫЕ ДИАЛОГОВЫЕ ОКНА
В проектах Бэйсика имеются две разновидности таких окон: v Окно сообщений: работает с функцией Msg. Box и выводит простейшие сообщения для пользователя. v Окно ввода: работает с функцией Input. Box и обеспечивает ввод информации.
Функция Input. Box § Выводит на экран диалоговое окно, содержащее сообщение и поле ввода. § Устанавливает режим ожидания ответа. § Имеет синтаксис: Input. Box(Сообщение, Заголовок, Текст по умолчанию) Сообщение – максимальная длина 1024 символа. Перенос – клавиша Enter.
Заголовок – выражение, которое отображается в верхней строке окна. Если этот аргумент опущен, в строке будет имя приложения, например, Microsoft Excel. Текст по умолчанию – выражение, отображаемое в поле ввода, если пользователь не введет другую строку. Если аргумент опущен, поле ввода отображается пустым.
Например, оператор Результат = Input. Box(“Введите число от 1 до 3”, ”Пример”, ” 1”) выведет на экран окно
При вводе программы выводится окно
§ § Функция Msg. Box Выводит на экран диалоговое окно, содержащее сообщение; Устанавливает режим ожидания нажатия пользователем кнопки; Позволяет помещать в окне различные кнопки; Сохраняет значение типа Integer, указывающее, какая кнопка была нажата.
Например, оператор • Ответ =Msg. Box(“Обнаружена ошибка. Продолжить? ”, Vb. Yes. No”Пример2”) выведет окно
Пример Составим программу для организации диалога с пользователем. 1. Откроем Word. 2. Сервис – Макрос – редактор VBA. 3. Insert – Module. 4. Insert – Procedure. 5. Ввести имя программы Диалог – Ок. 6. Ввести текст программы:
Sub Диалог ( ) ‘Описание переменной для ввода ответа Dim Ответ As Variant ‘ Присвоение переменной значения из окна ввода Ответ = Input. Box(“Введите название изучаемого предмета”) ‘ Вывод окна с сообщением о начале работы с ‘предметом Msg. Box(“Изучаем предмет” & Ответ) End Sub
7. Нажать F 5 для запуска программы на выполнение. Выводится окно 8. Вводим название «Информатика»
Нажимаем Ок. Появится окно:
4. 4. Инструкции управления порядком выполнения команд (операторы перехода и выбора) В Бейсике три типа таких операторов: v Оператор безусловного перехода; v Оператор выбора.
Оператор безусловного перехода Go. To (Перейти к…) Имеет синтаксис: Go. To Метка оператора Задает переход на указанную строку внутри программы. Например: X =12 Y = X^2 Go. To M 1 … M 1 Stop
Оператор условного перехода If (если) Then (то) Else (иначе) Синтаксис оператора: If условие Операторы 1 Else Операторы 2 End If Then
Оператор If работает так: § Проверяется указанное условие; § Если условие выполняется – переход к Операторам 1; § Если не выполняется – переход к Операторам 2.
Например, фрагмент программы Dim X, Y As Integer X=3 If X < 0 Then Y = 2*X Else Y = X^2 End If End Sub вычислит результат: 9.
Фрагмент программы Dim T, Z As Integer T = -5 If T < 0 Then Z = 3+T Else Z = T^3 End If Msg. Box(“Z= “ & Z) выведет диалоговое окно:
Изменим исходные данные:
Самостоятельно определить результат работы фрагмента программы Dim X, Z As Integer X=10 If X > 7 Then Z = 4*X Else Z= 4 + X End If Msg. Box(“ Z= “ & Z)
Результат работы программы
Пример Вычислить Значение Х находится в ячейке С 7 электронной таблицы, а результат следует поместить в ячейку F 8 той же таблицы.
Решение 1. Запустить Excel. 2. Ввести в ячейку С 7 число – 3. 3. Сервис – Макрос – Редактор Visual Basic. 4. Insert – Module. 5. Insert – Procedure. 6. Ввести имя программы Ветвь. 7. Ввести текст программы:
8. Запустить программу на вычисление (F 5). 9. Перейтина лист Excel для проверки работы программы (Щелчок по Microsoft Excel на Панели задач). Результат:
Проверим вторую ветвь программы 10. Ввести в ячейку С 7 число 3. 14. 11. Для перехода в VBA щелкнуть по Microsoft VB на Панели задач. 12. Нажать F 5.
Условный оператор с одной ветвью Можно использовать оператор If без ветви Else. Структура такого оператора: If условие операторы End If Then
Пример Проверить значение ячейки D 3 электронной таблицы. Если оно больше 1000, следует вывести сообщение «Вычисления прекратить» . Программа: Sub Одна. Ветвь ( ) If Range(“D 3”). Value > 1000 Then Msg. Box(“Вычисления прекратить”) End If End Sub
Организация программ для проверки нескольких условий В этом случае в теле (т. е. внутри) одного условного оператора записывают другие условные операторы. Пример Вычислить
Sub Три. Ветви ( ) Dim X, Z As Single If X > 13 Then Z=X– 8 Else If X <= 0 Then Z = X^4 Else Z = 9*X End If End Sub
Пример Составить программу вычисления Значение Х находится в ячейке А 1 листа ЭТ, а значение Y следует поместить в ячейку В 2 того же листа.
Решение 1. Открыть ЭТ. 2. Записать в ячейку А 1 число – 4. 3. Создать процедуру с именем Пример5. 4. Ввести текст программы:
5. Нажать F 5. 6. Щелкнуть по Ms Excel на Панели задач. 7. Для проверки второй ветви программы: § ввести в А 1 число 2; § перейти в редактор VBA; § нажать F 5.
8. Для проверки третьей ветви программы: § ввести в А 1 число 0; § перейти в редактор VBA; § нажать F 5. Результат:
Пример Вычислить Значение Х находится в ячейке А 5 листа ЭТ с именем Первый, а значение Z нужно поместить в ячейку А 5 листа Второй.
• • Решение 1. Переименовать два листа ЭТ: Щелчок правой клавишей по Лист 1; Команда Переименовать; Ввести Первый. Повторяем операции для Листа 2 (Второй). 2. В ячейку А 5 листа Первый ввести число 9 (проверим вторую ветку). 3. Создаем программу:
Sub Пример6 ( ) Dim X, Z As Single ‘ описание листов Excel как объекты Dim Первый, Второй As Object ‘ Определение класса объектов Set Первый = Work. Sheets(“Первый”) Set Второй = Work. Sheets(“Второй”) ‘ Считывание значения Х с листа Первый Х = Первый. Range(“A 10”). Value ‘ Проверка значения Х
If X >= 10 Then Z = Log(X) Else If X < 1 Then Z = Abs(X) Else Z = Sqr(X) End If ‘ Запись результата на лист Второй. Range(“A 5”). Value = Z End Sub
4. Проверка работы программы (F 5). 5. Перейти на лист Второй ЭТ ( в ячейке А 5 – число 3). 6. Для проверки третьей ветви в ячейку А 5 листа Первый поместим число – 8. 7. Перейти в VBA, нажать F 5. 8. Перейти на лист Второй ЭТ ( в ячейке А 5 – число 8). 9. Для проверки первой ветви программы в ячейку А 5 листа Первый поместим число 2, 78 ( на листе Второй в ячейке А 5 должно быть число 1).
Пример Организовать ввод в диалоговом окне и последующий анализ значения переменной Х. Вывести сообщения в случае попадания значений Х в интервал [0; 1) или [1; 2]. Решение 1. Создаем программу.
2. Запустить программу на выполнение ( F 5) 3. Введем число 0, 5. Нажмем Ок.
4. Вновь запустим программу (F 5) и введем число 1, 5. При следующем запуске программы введем число 10.
Контрольный пример. Назовите результат. Dim Y, Z As Integer Y = 15 If Y <= -5 Then Z = 2*Y Else If Y >= 20 Then Z = Y^2 Else Z = Y/3 End If
Пример Составить программу для начисления премии работникам предприятия в зависимости от стажа работы Стаж работника записан в ячейке А 4 листа ЭТ «Данные» . Начисленную премию нужно записать в ячейку С 4 того же листа.
Структура оператора If для проверки большого числа условий If Then Условие о Операторы Else. If Условие 1 Then Операторы 1 …………………. Else. If Условие N Then Операторы N Else Операторы при невыполнении всех условий End If
Программа для примера 8 с Else. If
Контрольный пример. Вычислите результат
Оператор выбора Select Case (выбрать по признаку) Select Case Анализируемое выражение Case Выражение 1 Операторы 1 Case Выражение 2 Операторы 2 ………………………… Case Else End Select Выражение N Операторы при невыполнении всех условий
Пример Рассчитать стоимость перевозки груза в зависимости от расстояния Исходные данные и результат поместить в Excel
Решение 1. Создаем ЭТ 2. Вводим в ячейку В 1 “Луга”. 3. Создаем программу
4. Нажимаем F 5. Результат: Причина ошибки – слова “Луга”, “ЛУГА”, “луга” для VBA являются разными.
Для исправления ошибки удобно использовать оператор Ucase(аргумент). Он переводит любой текст аргумента в большие буквы. Запишем оператор присваивания значения переменной Город в виде: Город = Ucase(Range(“B 2”). Value)
5. Нажмем F 5. Результат:
Проверка неравенств с использованием оператора Select Case Переменная Case Is Неравенство Операторы Case Начальное значение To Конечное значение Операторы End Select
Пример Составить программу для определения стоимости перевозок в зависимости от расстояния
Контрольный пример. Вычислите результат