
Объект.Метод
Свойство представляет собой атрибут объекта. Для изменения характеристик объекта надо задать новое значение его свойства. Синтаксис оператора:
Объект.Свойство=ЗначениеСвойства
Событие представляет собой действие, распознаваемое объектом, и может быть вызвано пользователем, программой или операционной системой. По своей сути событие представляет собой аппаратное или программное прерывание, которое обрабатывается создаваемой пользователем программой обработки событий (прерываний). В целом программирование на VBA представляет собой процесс создание кода программ, непосредственно или косвенно генерирующих отклики на события.
Лабораторная установка
Лабораторной установкой является персональный компьютер IBM PC с установленным пакетами Excelи VisualBasicforApplications.
Порядок выполнения работы
Включите компьютер. Загрузите Windows. Загрузите Excel. Если вы это делаете на этой машине впервые, то по умолчанию Excel в качестве названия рабочей книги (имени файла на диске) предлагает название Книга1 или же Книга с неким текущим номером. Выполните команду главного меню Файл/Сохранить как и получите на экран окно Сохранение документа. При стандартной настройке в окне Папка появится название основной рабочей папки Мои документы. Если по каким-то причинам установилась другая папка, нажмите кнопку меню Папка и выберете папку Мои документы. Кнопкой Создать новую папку создайте папку с номером вашей группы, если она отсутствует. Откройте эту папку и в окне Имя файла исправьте название Книга1на название, соответствующее вашей фамилии, сохранив расширение имени файла .xls. Нажмите кнопку Сохранить и убедитесь, что в верхней левой области экрана после текста Microsoft Excelпоявилось название вашей рабочей папки в виде вашей фамилии. После этого при дальнейшей работе для загрузки своего файла вам будет необходимо войти в папку Мои документы, в ней найти папку с номером своей группы, а в ней выбрать файл со своей фамилией.
Включите режим записи макроса, для чего выберите режим Сервис/Макрос/Начать запись. В открывшемся меню Запись макроса введите свое имя макроса, например Проверка, и присвойте ему комбинацию горячих клавиш, например Ctrl+z. Нажмите кнопку меню OKи приготовьтесь к началу записи макроса в виде последовательности команд, выполняемых на рабочем листе Excel.
Введите в ячейку A1 первого рабочего листа чистой книги Excelслово Проверка. Введите в ячейку A2 число 2 и то же число в ячейку B2. В ячейке C2 запрограммируйте формулу для вычисления произведения содержимых ячеек A2 и B2. Остановите запись макроса нажатием кнопки Остановить запись.
Отключите режим автосохранения, для чего вызовите меню Сервис/Автосохранение, отключите флажок Запрашивать разрешение и флажок Сохранять каждые.
Очистите область A1:C3 рабочего листа и с помощью команд Сервис/Макрос/Макросы вызовите на выполнение макрос Проверка. Убедитесь, что макрос выполняется правильно.
Снова очистите область A1:C3 рабочего листа и вызовите на выполнение макрос Проверка с помощью комбинации клавиш Ctrl+z.
Ознакомьтесь с набором рабочих окон редактора VBA и с текстом созданной программы, для чего с помощью команд Сервис/Макрос/Макросы вызовите макрос Проверка и нажмите кнопку Изменить. Аналогичный результат можно получить выполняя последовательность команд Сервис/Макрос/Редактор VisualBasic. Редактор VBA имеет главное меню, аналогичное меню программ пакета Microsoft Office. Окно проекта открывается в результате выполнения команды Вид/Окно проекта и содержит иерархическую структуру файлов форм и модулей текущего проекта. По своему назначению модули могут быть двух типов – модули объектов и стандартные. К стандартным модулям относятся те, которые содержат макросы и добавляются в проект командой Вставка/Модуль. Формы создаются командой Вставка/Пользовательская форма, а модули класса – командой Вставка/Модуль класса. Двойной щелчок по имени модуля открывает связанное с ним Окно редактирования кода. Убедитесь в наличии других окон редактора (Окно редактирования форм, Окно свойств, Окно просмотра объекта, Окно отладчика).
Ознакомьтесь с текстом созданного модуля Проверка. Пример полученного текста представлен ниже.
Sub Проверка()
' Проверка Макрос
' Макрос записан 16.07.2001 (stepanov)
'
' Сочетание клавиш: Ctrl+z
'
Application.RunRange("AUTOSAVE.XLA!mcs02.OnTime")
Range("A1").Select
ActiveCell.FormulaR1C1 = "Проверка"
Range("A2").Select
ActiveCell.FormulaR1C1 = "2"
Range("B2").Select
ActiveCell.FormulaR1C1 = "2"
Range("C2").Select
ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"
EndSub
Первая строка представляет собой заголовок созданной процедуры Проверка. Параметры процедуры отсутствуют. Символом ' обозначен комментарий. Первая рабочая строка программы вызывает объект Application (приложение) с методом Run (выполнить), вызывающим на выполнение объект Range (диапазон) с параметрами начальной установки рабочего листа. Далее производится выделение ячейки A1 текущего рабочего листа и запись в активную ячейку в формате R1C1 текста “Проверка”. Отметим, что в Excelсуществует два формата (A1 и R1C1) и два способа адресации (относительная и абсолютная) ячеек памяти. В формате A1 признаком абсолютной адресации является символ “$”. В формате R1C1 абсолютный адрес задается индексами рабочей строки и столбца, а при необходимости использования относительной адресации в квадратных скобках указывается относительное смещение со знаком по отношению к текущей рабочей ячейке. Последующие действия программы соответствуют выполненной последовательности при программировании макроса. Как следует из текста, константы и формулы заносятся с использованием метода FormulaR1C1 объекта ActiveCell.
Модифицируйте созданную программу. Введите в ее текст описание двух дополнительных переменных:
Dimb, cAsInteger
Задайте в тексте программы оператором присваивания им некоторые начальные значения и модифицируйте строчки:
Range("A2").Select
ActiveCell.Formula = b
Range("B2").Select
ActiveCell.FormulaR1C1 = c
Запустите макрос на выполнение и убедитесь, что он выполняется правильно.
Введите в текст программы стандартное сообщение:
MsgBox "Первый сомножитель", vbOKOnly, "Проверка"
Убедитесь, что программа выполняется правильно.
Предварительно описав переменную d как строку символов, введите в текст программы оператор ввода данных:
DimdAsString
d = InputBox("Первый сомножитель", "Проверка")
Преобразуйте значение d из символьного вида к числовому с помощью функции
b = Val(d)
и убедитесь, что содержимое ячейки может быть задано с клавиатуры в диалоговом режиме.
Ниже представлен пример созданной в процессе модернизации макроса программы на языке VBA:
SubПроверка()
'
' Проверка Макрос
' Макрос записан 16.07.2001 (stepanov)
'
' Сочетание клавиш: Ctrl+z
'
Dim b, c As Integer
Dim d As String
Application.RunRange("AUTOSAVE.XLA!mcs02.OnTime")
Worksheets(1).Activate
b = 5
c = 6
MsgBox "Первый сомножитель", vbOKOnly, "Проверка"
d = InputBox("Первый сомножитель", "Проверка")
b = Val(d)
Range("A1").Select
ActiveCell.FormulaR1C1 = "Проверка"
Range("A2").Select
ActiveCell.Formula = b
Range("B2").Select
ActiveCell.FormulaR1C1 = c
Range("C2").Select
ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"
EndSub