
- •Федеральное агентство по образованию
- •Введение в vba
- •Объектно-ориентированное программирование
- •Основные понятия
- •Алфавит и словарь языка
- •Переменные
- •Константы
- •Строковые переменные
- •Массивы
- •Пользовательские типы данных
- •Операции vba
- •Объектная модель Excel
- •Свойства и методы объектов
- •Отображение объектной модели Excel
- •Иерархия объектной модели
- •Ссылка на объекты в коде vba
- •Работа с объектами
- •Задание свойств объекта
- •Использование методов объекта
- •Переменные-объекты
- •Коллекции
- •Метод Add
- •Свойство Count
- •Свойства и методы основных объектов Excel
- •Объект Application
- •Объект Worksheet
- •Объект Range
- •Просмотр объектов
- •Использование справочной системы
- •Использование функциональной клавиши f1
- •Использование помощника
- •Вывод сообщений и ввод и данных
- •Функция MsgBox
- •Функция InputBox
- •Метод InputBox
- •Объединение текстовых строк
- •Концепция событий Excel
- •Типы событий Excel
- •События объекта Workbook
- •События объекта Worksheet
- •События объекта Application
- •События объекта UserForm
- •События, не связанные с конкретными объектами
- •Метод OnKey
- •Событие OnTime
- •Формы пользователя
- •Свойства, методы и события экранных форм
- •Некоторые свойства форм
- •Некоторые методы форм
- •Некоторые события форм
- •Элементы управления
- •Элемент управления Label (Надпись)
- •Окно свойств формы
- •Элемент управления CommandButton (Кнопка)
- •Элемент управления TextBox (Текстовое поле)
- •Элемент управления ComboBox
- •Элемент управления ListBox (список)
- •Элемент управления CheckBox (Флажок)
- •Элемент управления ToggleButton (Выключатель)
- •Элемент управления OptionButton (Переключатель)
- •Элемент управления Image (Рисунок)
- •Элемент управления ScrollBar (полоса прокрутки)
- •Элемент управления SpinButton (Счётчик)
- •Элемент управления RefEdit (Поле со свёртыванием)
- •Элементы управления на рабочем листе
- •Инструкции vba
- •Оператор присваивания
- •Инструкция Set
- •Инструкция For… Next
- •Инструкция While…Wend
- •Инструкция Do... Loop
- •Инструкция For Each…Next
- •Инструкции перехода
- •Инструкция условного перехода If…Then…Else
- •Инструкция Select…Case
- •Инструкция безусловного перехода GoTo
- •Инструкции перехода к обработчику ошибок On Error
- •Инструкции прерывания выполнения блока Exit
- •Инструкция передачи управления выполнением процедуры подпрограмме внутри процедуры GoSub… Return
- •Инструкция передачи управления выполнением процедуры на одну из нескольких строк кода On…GoSub и On…GoTo
- •Функции vba
- •Встроенные функции
- •Математические функции
- •Функции преобразования данных
- •Функции даты и времени
- •Строковые функции
- •Примеры использования функций vba
- •Удаление ненужных символов
- •Определение длины строки
- •Сравнение и поиск строк
- •Функция StrComp
- •Функция InStr
- •Выделение части строки
- •Функция Left
- •Функция Right
- •Функция Mid
- •Форматирование значений данных
- •Функции, определённые пользователем
- •Пример функции
- •Файлы vba
- •Типы файлов в vba
- •Открытие и закрытие файла
- •Ввод данных в файл последовательного доступа
- •Вывод данных из файла последовательного доступа
- •Работа с файлом произвольного доступа
- •Создание процедуры
- •Выполнение процедуры
- •Сохранение процедуры
- •Запись последовательности действий пользователя
- •Просмотр кода макроса
- •Отладка программ
- •Тестирование и отладка как этап разработки приложений
- •Отладка
- •Режим останова
- •Использование окна Immediate
- •Просмотр значений в окне Immediate
- •Пошаговое выполнение программ
- •Исправление ошибок
- •Библиографический список
- •Оглавление
Инструкции vba
Оператор присваивания
Оператор присваивания – это инструкция VBA , выполняющая математическое вычисление и присваивающая результат переменной или объекту.
Формат оператора:
[Let] имя переменной или свойства = выражение
Элемент Let необязателен. Он унаследован от ранних версий Visual Basic.
Выражение определяется как комбинация ключевых слов, операторов, переменных и констант. Эта комбинация возвращает в результате строку, число или объект. Выражение может осуществлять вычисление, обрабатывать символы или тестировать данные, присваивать значение переменной и ячейке рабочего листа или использоваться как значение свойства.
В VBA оператором присваивания выступает знак равенства (=).
Примеры
х = 1
x = x + 1
х = (у * 2) / (г * 2)
Cells(1, 2).Value = "План выпуска"
FileOpen = True
FileOpen = Not FileOpen
Range ("The Year").Value = 2009
Зачастую в выражениях применяются функции. Это могут быть встроенные функции VBA, функции рабочих листов Excel или специальные функции, разработанные в VBA. Операции, выполняемые оператором присваивания, приведены в п.2.6.
Инструкция Set
Инструкция Set присваивает ссылку на объект переменной или свойству объекта. При этом переменной присваивается значение объектного выражения или значение, возвращаемое объектной функцией.
Формат инструкции Set:
Set объектная переменная = [ New] объектное выражение Nothing
объектная_переменная – имя переменной или свойство,
New – необязательеый; задает создание нового экземпляра класса,
Объектное выражение – выражение, состоящее из имени объекта, переменной соответсвующего объектного типа, функции или метода,
Nothing – разрывает связь элемента объектная переменная с каким-либо определенным объектом.
Пример
Set Диапазон = Range(“A1:А10”)
– переменной Диапазон присваивается диапазон A1:А10.
Циклы
Циклы предназначены для многократного выполнения группы инструкций. В VBA для организации циклов используются инструкции For... Next, While…Wend, Do …Loop и For Each…Next.
Инструкция For… Next
Эта инструкция повторяет выполнение группы инструкций указанное число раз.
Формат инструкции For… Next
For Счетчик = Начало То Конец [Step Шаг]
[Инструкции1]
[Exit For]
[Инструкции2]
Next [Счётчик]
Формат инструкции For… Next содержит следующие элементы:
Элемент инструкции |
Описание элемента |
Счетчик |
Обязательный. Числовая переменная, используемая в качестве счётчика цикла |
Начало |
Обязательный. Начальное значение для Счетчик |
Конец |
Обязательный. Конечное значение для Счетчик |
Шаг |
Необязательный. Шаг изменения значения Счетчик после каждого цикла. По умолчанию используется значение 1 |
Инструкции |
Необязательный. Один или более операторов, выполняемых определённое число раз |
Пример1
В приведённой ниже процедуре TestFor подсчитывается сумма нечётных чисел в заданном диапазоне, причём числа формируются в цикле с нарастанием на 1.
Option Explicit_________________________________________________
Sub TestFor()
'Подсчёт суммы нечётных чисел в заданном диапазоне
Dim i As Integer
Dim n As Integer
Dim Sum As Integer
Dim r As Integer
n = InputBox("Ведите количество чисел", "Количество нечётных чисел")
r = 0
For i = 1 To n Step 2 '(сумма нечётных чисел от 1 до n)
Sum = Sum + i
r = r + 1
Next i
MsgBox Prompt:="Сумма " & r & " нечётных чисел в диапазоне от 1 до " & n & _
“ равна " & Sum, Buttons:=vbExclamation, _
Title:="Количество нечётных чисел"
End Sub
Ниже приведены диалоговые окна, появляющиеся при выполнении макроса TestFor.
Пример2
В приведённой ниже процедуре TestFor1 подсчитывается сумма нечётных чисел в диапазоне A1:J10 таблицы Excel.
В этой процедуре используются два цикла: внешний цикл с параметром цикла i и вложенный цикл с параметром цикла j.
Option Explicit_________________________________________________
Sub TestFor1()
'Подсчёт суммы нечётных чисел в заданном диапазоне
Dim i As Integer
Dim j As Integer
Dim m As Integer
Dim n As Integer
Dim Sum As Integer
Dim r As Integer
n = InputBox("Ведите количество чисел в столбце", _
"Количество нечётных чисел")
m = InputBox("Ведите количество чисел в строке", _
"Количество нечётных чисел")
r = 0
For i = 1 To n Step 2 '(сумма нечётных чисел от 1 до n)
For j = 1 To m Step 1
Sum = Sum + Cells(i, j)
r = r + 1
Next j
Next i
MsgBox Prompt:="Сумма " & r & " нечётных чисел в диапазоне" _
& Chr(13) + Chr(10) _
& " от 1 до " & n * m & " равна " & Sum, Buttons:=vbExclamation
End Sub
В процедуре TestFor2 реализован алгоритм ввода данных с клавиатуры в ячейки рабочего листа; заполнение производится последовательно столбец за столбцом двумя циклами.
Sub TestFor2()
Dim i As Integer
Dim j As Integer
Dim m As Integer
Dim n As Integer
m = InputBox("Введите количество чисел в столбце", _
"Количество нечётных чисел")
n = InputBox("Введите количество чисел в строке", _
"Количество нечётных чисел")
For i = 1 To n Step 1 '(сумма нечётных чисел от 1 до n)
For j = 1 To m Step 1
Cells(j, i) = InputBox("Ведите значение в ячейку " & Chr(64 + i) & j, _
"Ввод данных в таблицу")
Next j
Next i
End Sub
В процедуре TestFor2 функция Chr(64 + i) возвращает (выдаёт значение) строку, содержащую символ, код которого указан в качестве аргумента. Код 65 соответствует латинской букве A, 66 – букве B и т.д. Ниже показано диалоговое окно, соответствующее функции InputBox во вложенном цикле цикле процедуры TestFor2.