
- •Содержание
- •Раздел 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. Основные формы записи алгоритмов
- •Понятие "алгоритм"
- •Классификация алгоритмов
- •Способы записи алгоритмов
- •Запись на естественном языке
- •Изображение алгоритма в виде графических символов
- •Представление основных типов алгоритмов в виде блок-схем
Запись макроса
Пример
Пусть требуется рассчитать размер вклада через год при условии, что первоначальная сумма составляла 10 тыс. рублей и вклад был открыт под 10,5% годовых с ежемесячным начислением процентов.
Включите запись макроса командой Сервис-Макрос-Начать запись (Tools-Record Macro-Record New Macro).
В поле Имя макроса (Macro Name) введите имя будущей процедуры. По умолчанию имя состоит из слова "Макрос" ("Macro") и порядкового номера создаваемого макроса. Нажатие на OK включает запись.
Рис. 1.1. Запись нового макроса при помощи макрорекордера
В
статусной строке появится сообщение
Запись
(Recording),
а на экране возникнет панель инструментов,
первая кнопка которой – Остановить
запись (Stop Macro).
Если этой панели на экране нет, то
необходимо включить ее с помощью команды
Сервис-Настройка,
вкладка Панели
инструментов. В списке
возможных панелей инструментов пометьте
Остановить запись.
Введите данные и формулы в соответствии с рис. 1.2 (a) и остановите запись макроса. Перейдите в редактор VB, нажав клавиши Alt+F11.
Созданная процедура записана в модуле Module1 с именем Макрос1. В ячейке B13 стоит формула расчета нового размера вклада по формуле сложных процентов. Ссылки на ячейки с данными записаны в стиле R1C1 и являются относительными по отношению к ячейке B13.
Рис. 1.2. Расчет размера вклада: (a) – формулы, (b) – значения |
Sub Макрос1() 'Макрос1 Макрос ' Макрос записан 19.07.2007 Range("A10").Select ActiveCell.FormulaR1C1 = "S" Range("A11").Select ActiveCell.FormulaR1C1 = "T" Range("A12").Select ActiveCell.FormulaR1C1 = "r" Range("A13").Select ActiveCell.FormulaR1C1 = "P" Range("B10").Select ActiveCell.FormulaR1C1 = "10000" Range("B11").Select ActiveCell.FormulaR1C1 = "12" Range("B12").Select ActiveCell.FormulaR1C1 = "10.50%" Range("B13").Select ActiveCell.FormulaR1C1 = "=R[-3]C*(1+R[-1]C/12)^R[-2]C" Range("B14").Select End Sub |
Запуск макроса
Активизируйте другой рабочий лист – Лист2 и проверьте правильность выполнения тех же расчетов на новом листе. Для этого выполните команду Сервис-Макрос-Макросы (Tools-Macro-Macros).
Рис. 1.3. Меню процедур
В диалоге
можно набрать имя выполняемого макроса
или выбрать его из списка имеющихся
макросов. Нажатие на командную кнопку
Выполнить
(Run)
этого диалога активизирует выбранный
макрос. Этот диалог можно вызвать, нажав
на кнопку Выполнить
макрос (Run
Macro)
панели инструментов
Visual Basic.
Рис. 1.4. Панель инструментов Visual Basic для рабочих листов MS Excel
Для быстрого запуска макроса можно использовать "горячие" клавиши (Shortcut), задав их в диалоге Запись макроса (см. рис. 1.1) или нажав кнопку Параметры (Options) в диалоге на рис. 1.3. Задается нецифровая клавиша, нажатие которой в сочетании с клавишей Ctrl запустит макрос. Дополнительно можно использовать клавишу Shift.
При задании "горячих" клавиш в макросе автоматически появляется комментарий – сообщение о наличии таких клавиш, например, ' Сочетание клавиш: Ctrl+t.
Внимание
Не используйте комбинации клавиш, задействованные для других целей, так как новое назначение будет приоритетным и отменит существовавшее ранее.
Удобно связать макрос или любую процедуру с объектами рабочей книги или рабочего листа. Можно для запуска макроса
создать команду меню;
создать кнопку на панели инструментов;
создать кнопку на рабочем листе;
связать процедуру с графическим объектом.
Первые две возможности реализуются при помощи команды Вид-Панели инструментов-Настройка (View-Toolbars-Customize), вкладка Команды (Commands) (см. рис. 1.5).
После выбора в левом окне строки Макросы (Custom) справа доступны две возможности: Настраиваемая кнопка и Настраиваемая команда меню. Переместите выбранную опцию на панель инструментов или в меню соответственно. Сразу становится доступной кнопка Изменить выделенный объект. В новом диалоговом окне настройте вид кнопки или измените команду меню, затем выполните команду Назначить макрос (Assign Macro) и выберите из списка процедур нужный макрос.
(a) (b)
Рис. 1.5. Назначение макроса кнопке панели инструментов или команде меню: (a) – выбор команды меню или кнопки, (b) – команды для настраиваемой кнопки |
Для привязки к графическому объекту выполните команду Назначить макрос из контекстного меню для выбранного графического объекта.
Привязка процедуры к кнопке рабочего листа подразумевает выполнение событийной процедуры нажатия на кнопку (см. Раздел 7. Пользовательские формы).