Введение 11
Язык VBA 11
Объектно-ориентированное программирование 12
Объект 13
Объектная модель Microsoft Excel 2016 13
Объектная модель VBA 13
Объект Application 14
Классы 15
Свойства 16
Методы 16
События 18
Глава 1. Основные понятия VBA
19
Базовые конструкции языка Visual Basic 19
Типы данных в VBA 20
Константы и переменные 22
Область действия переменных и констант 22
Объявление констант и переменных 22
Начало работы 23
Настройка безопасности 25
Запись макроса 27
Имя макроса 27
Разработка проекта 28
Создание модуля 31
Создание модуля с помощью контекстно-зависимого меню 31
Окно кода 31
Оператор Option Explicit 33
Первая процедура 33
Объявление переменной в VBA 35
Оператор Debug.Print 36
Автоматический ввод атрибутов команд 37
Структура кода процедуры 38
Метод Active 39
Объект ActiveCell 40
Открытие книги с макросом 40
Ввод данных 43
Оператор With 43
Свойство Selection 44
Свойство Orientation 45
Объект Range 46
Кнопка (элемент управления ActiveX) 47
Свойство Offset 49
Функция Environ 49
Функция MsgBox 50
Константы табуляции Chr(9) и Chr(10) 52
Диалоговое окно InputBox 54
Переменная String 54
Переменная Long 55
Константа с указанием типа Long 55
Переменная Byte 56
Глобальные переменные 56
Методы Protect и Unprotect 56
Удаление модуля 58
Глава 2. Основы программирования в VBA
60
Ячейка и диапазон ячеек 60
Арифметические выражения 61
Правила записи арифметических выражений 62
Арифметические выражения в ячейке 62
Арифметические выражения с ячейками 63
Обрамление ячейки — свойство BorderAround 63
Синтаксис оператора With 65
Случайные числа RAND 65
Перевод градусов по Фаренгейту в градусы по Цельсию 66
Замена значений формул числом 67
Функция RGB 70
Свойства Color и ColorIndex 71
Свойство Color 71
Свойство ColorIndex 71
Палитра цветов 74
Подсчет цветов в рисунке 75
Замена цвета 78
Защита ячеек рабочего листа от форматирования 79
Выделение ячеек 81
Выделение серым цветом каждой второй строки 82
Выделение миганием 83
Календарь 85
Подсветка формул 87
Использование клавиатурного сокращения 88
Подсветка минимальных и максимальных значений 90
Цветовая шкала 91
Глава 3. Логические операторы
93
Оператор If Then Else 93
Неполная форма оператора If Then 94
Полная форма оператора If Then Else 95
Оператор ElseIf 95
Вложенные логические операторы 96
Операторы сравнения 96
Оператор If в названии и в теле процедуры 98
Оператор If в теле процедуры 99
Примеры использования логических операторов 99
Свойство Name 100
Свойство Value 100
Функции IsEmpty и IsNumeric 101
Свойство Range.HasFormula 101
Переход к ячейке A2016 102
Свойство Application.Version 103
Альтернативное использование оператора Case 105
Функция InputBox 106
Оператор GoTo 108
Проверка существования файла 108
Глава 4. Операторы цикла
110
Цикл For To Step Next 110
Цикл For To Next 111
Заполнение столбца 112
Заполнение столбца с большим шагом 112
Отрицательный шаг 113
Выход из цикла по условию 114
Кнопка для запуска макроса (элемент управления формы) 115
Вложенный цикл For To Next 116
Цикл For Each 118
Цикл Do While Loop 119
Цикл Do Until Loop 121
Цикл While Wend 122
Оператор With…End With 123
Измерение времени работы процедуры 125
Глава 5. Функции, определенные пользователем
129
Построение функций 129
Построение графика функции одной переменной 129
Структура кода функции пользователя 130
Построение графика функции одной переменной (продолжение) 130
Построение графика кусочно-непрерывной функции с двумя условиями 133
Построение графика кусочно-непрерывной функции с тремя условиями 134
Названия формул на английском 136
Пользовательская функция с тремя переменными 136
Создание собственной категории 138
Функция без параметров 140
Переименование рабочего листа 140
Функция с переменной типа Range 141
Случайное число 142
Функция с массивом 144
Функция с массивом в качестве параметра 145
Вызов функции из процедуры 147
Вызов процедуры, использующей функцию, из процедуры 149
Запись названий формул 150
Вычисление определенного интеграла 152
Метод прямоугольников 153
Метод трапеций 153
Метод Симпсона 153
Переключатели OptionButton 156
Глава 6. Пользовательская форма
159
Создание форм средствами VBA 159
Добавление формы UserForm в проект 159
Семейство форм 160
Свойства формы 160
Разметочная сетка 162
Методы формы 163
События формы 163
Командная кнопка для вызова формы 164
Элементы управления 166
Префиксы 169
Элемент управления Label 169
Элемент управления CommandButton 172
Элемент управления TextBox 175
Элементы управления OptionButton и Frame 178
Ключевое слово Me 181
Элемент управления ScrollBar 181
Элемент управления ListBox 185
Элемент управления ComboBox 188
Элемент управления Image 190
Элемент управления SpinButton 196
Элемент управления TabStrip 200
Элементы управления CheckBox и MultiPage 203
Элемент управления RefEdit 206
Элемент управления ToggleButton 209
Создание собственного элемента управления 210
Глава 7. Программирование объектов Shape
212
Типы объектов семейства Shapes 212
Тип объекта msoShapeRectangle (прямоугольник) с заливкой (Fill) 213
Тип объекта msoConnectorCurve (соединительная линия) 215
Метод AddConnector 216
Метод Patterned 218
Рисование линии: метод AddLine 219
Тип объекта msoShapeSmileyFace 220
Свойство Name 221
Стрелка 222
Метод FillFormat.OneColorGradient 224
Текстовый фрейм 224
Тип фигуры msoShapeHeart (сердце) с заливкой (Fill) 226
Метод Group 227
Создание выноски с текстовым фреймом 228
Свойство ThreeD 229
Частичное и полное удаление фигур 230
Оператор Set 231
Фракталы 233
Тип данных, определенный пользователем 234
Фракталы из треугольников 234
Фракталы из многоугольников 238
Фракталы из четырехугольников 240
Элементы управления формы 242
Элемент управления Полоса прокрутки 243
Глава 8. Работа с ячейками и областями
246
Объект Application 246
Свойства объекта Application 246
Методы объекта Application 247
Объект Range 248
Адресация ячеек 248
Свойства объекта Range 249
Методы объекта Range 250
Объект Selection 251
Объект Cell 251
Выделение нескольких областей 251
Выделение последней ячейки в диапазоне 252
Нахождение конца диапазона в виде ячейки 254
Выделение ячеек с формулами 255
Выделение рабочей области 256
Форматирование объединенных ячеек 257
Выделение по условию 258
Убираем лишнее 259
Убираем текст 260
Имена и фамилии 262
Создание комментариев 263
Метод Delete 264
Метод Clear 265
Метод Application.Goto 265
Глава 9. Работа с данными
266
Массив из трех элементов 266
Динамический массив данных 268
Сравнение областей на одном листе 270
Сравнение областей на разных листах 271
Сортировка 275
Вертикальная и горизонтальная сортировка 275
Сортировка областей (блоков) 278
Простая сортировка блоков 278
Сортировка блоков с изменением ее условий 280
Сортировка по цвету 281
Контроль автофильтра посредством VBA 284
Команда Итоги 285
Глава 10. Автоматизация диаграмм
288
Объектная модель диаграмм 288
Типы диаграмм 290
Свойства объекта Chart 292
Методы объекта Chart 293
Первая диаграмма 293
Создание диаграммы с помощью VBA 297
Коническая гистограмма, созданная в VBA 299
Печать диаграмм 301
Удаление диаграммы 303
Форматирование параметров диаграммы 304
Изменение цвета поверхности 306
Добавление линии тренда 308
Форматирование отрицательных значений 311
Убрать/вернуть закраску 313
Изменение типа диаграммы 315
Изменение прозрачности 317
Поясняющие надписи 319
Красивые узоры 321
Глава 11. Программирование объектов и событий
323
Где и как создаются процедуры обработки событий? 324
Процедура для объекта ЭтаКнига 325
События, связанные с кнопками мыши 326
Процедура в модуле 326
Событие для объекта Лист1 327
Ключевое слово ByVal и параметр Target 328
Очистка ячейки 329
Свойства ScrollRow и ScrollColumn 330
События активации и деактивации 330
Свойство приложения ActiveWindow 330
Активный лист 331
Число обращений к макросу 332
Управление выделением области 333
События Activate и Deactivate рабочего листа 334
Двойной щелчок левой кнопкой мыши 335
Щелчок правой кнопкой мыши 336
Введите пароль 336
Событие закрытия книги 337
Событие сохранения книги 338
Глава 12. Операторы даты и времени
340
Вывод даты и времени в окно Immediate оператором Debug.Print 340
Печать даты и времени с помощью функции CDate 341
Функции DateSerial и TimeSerial 341
Текущие дата и время 342
Текущие дата и время с учетом минут и секунд 342
Функция Weekday — день недели 343
Функция Format 344
Функция DateDiff 346
Функция DatePart 347
Функция WeekdayName 347
Вывод сообщения на 3 секунды 348
Метод Application.OnTime 349
Автоматическое заполнение ячеек датами методом AutoFill 350
Подсветка даты 352
Поиск даты 353
Календарь 355
Календарь по месяцам 358
Календарь по неделям 361
Определение возраста 364
Глава 13. Работа с рабочей книгой
366
Свойства объекта Workbook 366
Методы объекта Workbook 367
Синтаксис открытия рабочей книги 367
Открытие рабочей книги 367
Вызов диалогового окна Открытие документа 369
Открытие рабочей книги в диалоговом окне 369
Открытие Блокнота 371
Свойство Workbook.Name 373
Создание рабочей книги 373
Имя приложения 374
Сохранение рабочей книги 376
Метод Save 376
Метод Save As 376
Сохранение копированием 377
Сохранение всех книг и выход 377
Сохранение всех книг и выход по запросу 378
Объект Worksheet 379
Свойства объекта Worksheet 379
Методы объекта Worksheet и семейства Worksheets 379
Деление рабочего листа на страницы для печати 380
Глава 14. Файловые операции
382
Формат файлов 382
Метод CreateTextFile 383
Список файлов указанной папки 384
Режим доступа Input/Output 385
Файлы из Application.AddIns 387
Объект FileDialog 388
Функция GetAttr 389
Документирование информации о файле 390
Проверка существования файла 392
Команда Kill для удаления файла 393
Команда FileCopy для копирования файла 394
Переименование файла 395
Перемещение файла 395
Глава 15. Отладка программ и сообщения об ошибках
397
Возникновение ошибок 397
Выявление и исправление ошибок 397
Три окна для просмотра ошибок 399
Окно просмотра 399
Локальное окно 401
Окно наблюдения 402
Объект Err 405
Оператор On Error 405
Оператор On Error Resume Next 406
Оператор On Error GoTo: вариант 1 407
Оператор On Error GoTo: вариант 2 407
Константы xlDisabled и xlInterrupt 409
Массив листов 409
Команда меню Debug 410
Глава 16. Программирование связей
412
Гиперссылки 412
Кнопка гиперссылки 414
Передача данных из Excel в Word 415
Передача данных из Word в Excel 416
Передача данных из Excel в PowerPoint 417
Передача данных из PowerPoint в Excel 419

Приложение. Описание электронного архива 423
Предметный указатель 425