
- •Visual Basic for Applications (vba). Лабораторные работы. Часть 1 Введение
- •Тема № 1: «Запись новых макросов в Excel. Выполнение макросов»
- •Задание №1
- •Варианты задания
- •Тема №2: «Написание новых макросов и процедур»
- •Dim имя_переменной1 [, имя_переменной2]
- •Dim имя_переменной1 [As тип1] [, имя_переменной2 [As тип2] ]
- •Типы данных
- •MsgBox Сообщение[,Кнопки][,Заголовок]
- •Возможные комбинации кнопок и значков
- •Задание №2
- •Варианты задания
- •Тема №3: «Создание формы»
- •Задание №3
- •Варианты задания
MsgBox Сообщение[,Кнопки][,Заголовок]
Аргументы:
Сообщение- обязательный аргумент, задающий в окне выводимое информационное сообщение.
Если сообщение не переменная, а текст, то записывается в кавычках.
MsgBox "Здравствуй, Excel!"
Сообщение может состоять из нескольких текстовых строк, объединенных знаком &. MsgBox "Моя " & "первая " & "программа"
Для перехода на новую строку при выводе используется функция Chr(13).
MsgBox "Моя " & "первая " & Chr(13) & "программа"
Чтобы разорвать длинную команду на две строки необходимо в конце строки после пробела использовать символ _.
MsgBox "Сколько Вам" & _
" полных лет ?"
При склейке фрагментов различного типа данных (например, Byte и String) необходимо использовать символ &, а текстового можно символ +.
MsgBox "Сегодня" + " на календаре " & Date
При операции присваивания используются скобки.
y = MsgBox("Начнем?")
MsgBox y
После выполнения данной процедуры нажатие на кнопку ОК, либо кнопку закрытия окна приведет к отображению другого окна, выводящего значение переменной у.
Заголовок - задает заголовок окна. Если опустить этот аргумент, VBA отображает в строке заголовка диалогового окна MsgBox текст "Microsoft Excel".
MsgBox "Сегодня на календаре " & Date , , "Внимание"
Кнопки - значение этого аргумента определяет категории появляющихся в окне кнопок. От значения аргумента кнопки зависит также, появляется ли в окне какой-либо значок. Если не указано, какие кнопки необходимо отображать в окне сообщений, то используется значение по умолчанию, соответствующее кнопке ОК.
Возможные комбинации кнопок и значков
Отображение |
Аргумент |
Кнопка ОК |
VbOKOnly |
Кнопки ОК и Отмена |
VbOKCancel |
Кнопки Да и Нет |
VbYesNo |
Кнопки Да, Нет и Отмена |
VbYesNoCancel |
Кнопки Прекратить, Повторить и Игнорировать |
VbAbortRetryIgnore |
Кнопки Повторить и Отмена |
VbRetryCancel |
Информационный
знак
|
VbInformation |
Знак
|
VbCritical |
Знак
|
VbQuestion |
Знак
|
VbExclamation |
Пример 2.
Напишите процедуру HelloExcel, выводящую в диалоговом окне приглашение «Начнем?» и отображающую на экране сообщение “Здравствуй, Excel!” после нажатия на любую кнопку.
Sub HelloExcel()
MsgBox "Начнем?", vbYesNo, "Начало"
MsgBox "Здравствуй, Excel!", vbInformation, "Hello!"
End Sub
Для
запуска на выполнение написанной
процедуры выберите команду меню Run
-> Run
Sub/UserForm,
либо нажмите клавишу F5,
либо кнопку
на панели инструментов. В результате
будет выведено следующее диалоговое
окно:
После нажатия на кнопку «Да», «Нет» или закрытия окна будет выведено следующее диалоговое окно. Обратите внимание, что первое диалоговое окно имеет заголовок «Начало», а второе – «Hello!»
9. Функция ввода InputBox осуществляет ввод значений переменных с помощью окна ввода и имеет следующий синтаксис:
Имя_Переменной = InputBox( Сообщение[, Заголовок])
Аргументы:
Сообщение- обязательный аргумент. Задает в окне информационное сообщение, обычно поясняющее смысл вводимой величины.
Заголовок- задает заголовок окна.
Пример 3.
Ввести значение переменной N с клавиатуры, предусмотрев значение по умолчанию 10.
N = InputBox("Введите N", "Ввод исходных данных",10)
В результате будет выведено следующее окно для ввода значения переменной N.
Если значение по умолчанию подходит пользователю, то после щелчка кнопки ОК окно ввода закроется, переменной N присвоится значение 10 и выполнение программы возобновится с оператора, стоящего непосредственно за вызовом InputBox.
Если же значение по умолчанию не подходит пользователю, то перед щелчком по кнопке ОК необходимо ввести нужное значение переменной N.
Пример 4.
Напишите процедуру, вычисляющую площадь круга, но радиус круга задает пользователь.
Const Pi As Single =3.14
Dim CircleArea As Single
Sub List ()
Const BoxTitle = "Площадь круга"
Dim Radius As Single, Temp As String
Temp = InputBox("Введите радиус " & Chr(13) & "круга", BoxTitle)
Radius = CSng(Temp)
CircleArea = Pi * Radius * Radius
MsgBox CircleArea, vbInformation + vbOKCancel, BoxTitle
End sub
В рассматриваемом примере объявляется константа Pi и переменная CircleArea модульного уровня (видимы во всех процедурах заданного модуля), а также константа BoxTitle и переменные Radius и Temp процедурного уровня, которые имеют только локальный доступ в процедуре List (видимы только в процедуре). Функция InputBox отображает свой первый аргумент как текст в диалоговом окне. Функция Chr(13) осуществляет переход на новую строку. Функция InputBox использует второй аргумент, представленный константой BoxTitle, в качестве заголовка диалогового окна.
Пользователь вводит число в текстовое окно и выбирает командную кнопку ОК или Cancel, чтобы закрыть диалоговое окно. Введенное число присваивается переменной Temp. Результат функции InputBox всегда является строкой, поэтому переменная Temp была объявлена как String. Для преобразования значения строки в численное значение используется встроенная VBA-функция CSng(). Функция MsgBox выводит результат вычисления площади круга из переменной CircleArea, аргумент vbInformation добавляет информационный знак, а аргумент vbOKCancel – кнопки ОК и Отмена.
После ввода числа, равного 3, получим в результате окно следующего вида:
10. Команды делятся на описательные и исполнительные.
Описательные команды не приводят к выполнению каких-либо действий с переменными или объектами. Они служат для определения того, какие именно переменные используются при вычислении (команда определения переменных Dim); где начинаются и где заканчиваются вычисления (команды организации макросов и функций Sub... End Sub, Function...End Function).
Исполнительные команды служат для непосредственной организации вычислительного процесса. Это команды присваивания (=), организации циклов (For...Next, Do...Loop), выполнения действий по условию (If...Then...Else, Select Case...End Select). Каждая такая команда либо изменяет содержимое переменной или состояние объекта, либо направляет вычисления по определенной ветви. Основные команды VBA.