- •Содержание
- •Раздел 1. Быстрый старт 2
- •Раздел 2. Редактор Visual Basic 11
- •Immediate Window (окно проверки) 15
- •Раздел 3. Переменные и типы данных 27
- •Раздел 4. Операторы управления 51
- •Раздел 5. Процедуры, подпрограммы и функции 66
- •Раздел 6. Объекты ms Excel 101
- •Раздел 7. Пользовательские формы 139
- •Immediate Window (окно проверки) 177
- •Введение
- •Раздел 1.Быстрый старт Использование макрорекордера
- •Запись макроса
- •Запуск макроса
- •Абсолютные и относительные ссылки Запись формулы на рабочем листе
- •Макрорекордер
- •Диалоговые окна для ввода/вывода данных
- •Функция InputBox
- •Функция MsgBox
- •Раздел 2.Редактор Visual Basic
- •Окна редактора vb
- •Project Window (окно проекта)
- •Properties Window (Окно свойств)
- •Code (окно программы)
- •Immediate Window (окно проверки)
- •Получение справки
- •Запись процедур
- •Режимы работы с программой
- •Ошибки и их обнаружение
- •Отладка
- •Меню и панели инструментов Visual Basic
- •Панели инструментов Стандартная панель инструментов
- •Панель инструментов отладки
- •Раздел 3.Переменные и типы данных Объявление переменных
- •Важность объявления переменных
- •Область видимости переменных
- •Время жизни переменных
- •Инициализация переменных
- •Операции с элементарными данными
- •Оператор присваивания
- •Выполнение операций
- •Арифметические операции
- •Операции сравнения
- •Оператор Like
- •Логические операции
- •Символьные операции
- •Приоритет операций
- •Операции с другими типами данных
- •Объектные переменные
- •Массивы
- •Динамические массивы
- •Пользовательский тип
- •Раздел 4.Операторы управления
- •Условный оператор If
- •Оператор выбора Select Case
- •Операторы цикла
- •Цикл For…Next
- •Цикл For Each…Next
- •Оператор Set
- •Цикл Do…Loop
- •Цикл While…Wend
- •Раздел 5.Процедуры, подпрограммы и функции
- •Классификация процедур
- •Структура и объявление процедуры
- •Синтаксис объявления процедуры общего типа
- •Синтаксис объявления функции
- •Вызов процедуры
- •Параметры и аргументы
- •Возврат значения функции
- •Использование процедур-функций на рабочем листе
- •Поименованные аргументы
- •Использование необязательных аргументов
- •Использование параметра ParamArray
- •Вызов процедур другого проекта
- •Автопроцедуры
- •Событийные процедуры
- •Рекурсивные процедуры
- •Встроенные функции Классы функций
- •Использование табличных функций
- •Организация интерфейса при помощи встроенных функций
- •Функция MsgBox
- •Функция InputBox
- •Строковые функции
- •Примеры на использование различных строковых функций Функция Format
- •Функция Val
- •Функции Len, Mid
- •Функция Left
- •Функция Instr
- •Функция Chr
- •Математические функции
- •Функции Int и Fix
- •Функция Log
- •Функции Randomize и Rnd
- •Функции даты и времени
- •Примеры функций даты и времени Функции Day, Month, Year, DateSerial
- •Функции Now, Time, Timer
- •Функция WeekDay
- •Функции Hour, Minute, Second
- •Раздел 6.Объекты ms Excel
- •Свойства объектов
- •Методы объектов
- •Модель объектов
- •Коллекции объектов
- •Обращение к объекту Контейнеры
- •Ссылка на объект
- •Оператор With
- •Использование объектных переменных
- •Объект Application
- •Активные объекты
- •Свойства, влияющие на высвечивание на экране Свойство DisplayAlerts (r/w Boolean)
- •Свойства DisplayFormulaBar (r/w Boolean), DisplayStatusBar (r/w Boolean)
- •Свойство ScreenUpdating (r/w Boolean)
- •Свойства Top, Left, Height, Width, UsableWidth, WindowState
- •Свойство Visible (r/w Boolean)
- •Другие свойства объекта Application
- •Методы Метод Calculate
- •Метод CheckSpelling
- •Метод OnTime
- •Метод Wait
- •Коллекции объектов
- •Объекты Workbooks и Workbook
- •Событийные процедуры
- •Объекты Sheets, WorkSheets и WorkSheet
- •Свойства Свойство Name (r/w String)
- •Свойство Type (r/o String)
- •Свойство UsedRange
- •Свойства Next и Previous
- •Свойство Parent
- •Свойство Visible (r/w Boolean)
- •Методы Метод Add
- •Методы Move и Select
- •Событийные процедуры
- •Объект Range
- •Свойства Cвойство Range
- •Свойство Cells
- •Свойство Offset
- •Метод Union и свойство Areas
- •Свойства Column и Row (r/o Integer)
- •Свойства Columns и Rows
- •Свойство CurrentRegion
- •Cвойства, связанные с шириной и высотой ячейки
- •Методы Методы Select и Activate
- •Метод Clear
- •Цветовое оформление объекта Range Свойство ColorIndex
- •Свойство Color
- •Раздел 7.Пользовательские формы
- •Режимы работы с формой
- •Режим конструктора
- •Элементы управления
- •Событийные процедуры
- •Режим выполнения
- •Объекты UserForm и Controls
- •Разработка приложения
- •Приложение 1
- •Конструирование начальной формы
- •Свойства формы и элементов управления
- •Создание событийных процедур
- •Конструирование формы для выбора рабочего листа
- •Создание событийных процедур
- •Элемент ListBox
- •Событийная процедура инициализации формы
- •Завершение разработки приложения
- •Связь формы с ячейками рабочего листа
- •Элемент TextBox
- •Элемент ListBox
- •Приложение 2
- •Конструирование форм
- •Процедуры
- •Приложение a. Справочная система Просмотр объектов, их свойств и методов (Object Browser)
- •Окно Object Browser
- •Панель инструментов Object Browser
- •Выход из Object Browser
- •Интерактивная подсказка
- •Приложение b. Инструментальные средства отладки программ
- •Контрольные точки или точки останова
- •Трассировка или пошаговое выполнение программы
- •Использование объекта Debug
- •Окна отладчика
- •Immediate Window (окно проверки)
- •Окно значения переменной
- •Locals Window (окно локальных переменных)
- •Окно контрольных значений (Watches)
- •Приложение c. Основные формы записи алгоритмов
- •Понятие "алгоритм"
- •Классификация алгоритмов
- •Способы записи алгоритмов
- •Запись на естественном языке
- •Изображение алгоритма в виде графических символов
- •Представление основных типов алгоритмов в виде блок-схем
Абсолютные и относительные ссылки Запись формулы на рабочем листе
Абсолютные и относительные ссылки записываются в стиле A1 и в стиле R1C1.
Относительные ссылки определяют местоположение ячейки по отношению к активной ячейке. Обычно относительные ссылки используются при работе с различными областями таблицы, одинаково расположенными по отношению к активной ячейке.
Относительные ссылки в стиле A1 всегда состоят из имени столбца и номера строки, а ссылки в стиле R1C1 задают в квадратных скобках смещение по отношению к активной ячейке. Направление смещения влево/вверх определяется знаком минус (–), а смещение вправо/вниз – отсутствием знака. Например, если активна ячейка A4, то ссылку на ячейку D3 можно задать как D3 (стиль A1) или R[-1]C[3] (стиль R1C1).
При записи формулы в стиле A1 признаком абсолютной ссылки является знак доллара ($) перед адресом строки и/или столбца. В стиле R1C1 для задания абсолютной ссылки используются индексы ячейки. Например, на ячейку D3 указывает абсолютная ссылка $D$3 в стиле A1 и абсолютная ссылка R3C4 в стиле R1C1.
Макрорекордер
В процедурах абсолютные и относительные ссылки записываются в стиле R1C1.
Команда вычисления размера вклада в ячейке B13 с использованием абсолютных ссылок (набор адреса ячейки со знаками $ во время записи макроса) будет выглядеть так:
ActiveCell.FormulaR1C1 = "=R10C2*(1+R12C2/12)^R11C2"
Можно установить использование относительных ссылок при записи процедур (абсолютные ссылки используются по умолчанию). Для этого после запуска макрорекордера нажмите кнопку Относительная ссылка на панели инструментов Остановить запись (см. выше). Относительные ссылки будут использоваться до конца текущего сеанса работы в MS Excel или до повторного нажатия кнопки Относительная ссылка.
Пример
Процедуры закрашивают интервал ячеек желтым цветом.
Sub Макрос1() 'абсолютные ссылки Range("B1:C5").Select With Selection.Interior .ColorIndex = 6 .Pattern = xlSolid End With End Sub |
Sub Макрос2() 'относительные ссылки ActiveCell.Offset(0, 1).Range("A1:B5").Select With Selection.Interior .ColorIndex = 36 .Pattern = xlSolid End With End Sub |
Выделение интервала B1:C5 записано с абсолютными ссылками. При повторном выполнении процедуры снова будет выделен тот же интервал B1:C5 независимо от того, какая ячейка будет активной перед запуском процедуры.
|
В команде выделения интервала объект Range смещен относительно активной ячейки – свойство Offset устанавливает смещение на один столбец. Процедура Макрос2 окрасит интервал из двух столбцов и пяти строк, начинающийся в соседнем по отношению к активной ячейке столбце. |
Важно
Абсолютные ссылки всегда указывают на конкретную ячейку и команды, записанные с абсолютными ссылками, всегда выполняются с теми же ячейками, которые обрабатывались при создании макроса, независимо от положения активной ячейки, другими словами, независимо от выбранного объекта Range.
Относительные ссылки рассматриваются относительно выбранного объекта Range. Чтобы с помощью макроса обрабатывать произвольные ячейки, следует записать его команды с относительными ссылками.
Чтобы макрос всегда выполнял макрокоманды для определенной ячейки, а затем для других ячеек, связанных с предыдущей, нужно использовать абсолютные ссылки при записи команд для первой ячейки и относительные ссылки при записи команд для ячеек, связанных с первой.