Программирование на VBA в Excel 2019
Год издания: 2020
Автор: Комолова Н., Клименко А.
Издательство: БХВ-Петербург
ISBN: 978-5-9775-6593-6
Серия: Самоучитель
Язык: Русский
Формат: PDF
Качество: Издательский макет или текст (eBook)
Количество страниц: 497
Описание: Книга научит самостоятельно создавать приложения для автоматизации работы в программе Microsoft Office Excel 2019 с использованием макросов и языка программирования Visual Basic for Applications (VBA). Приведена информация о новинках программы, а также сервисах Power по работе с данными. Даны теоретические сведения о программировании, элементах объектной модели Excel, запуске и отладке макросов. Рассмотрены вопросы автоматизации рабочего листа при помощи элементов управления Excel. Описаны приемы создания макросов, пользовательских функций и форм в редакторе VBE. Приведены способы взаимодействия при помощи VBA с другими программами пакета Microsoft Office. Для закрепления материала рассмотрены примеры пользовательских приложений с анализом и поясняющими комментариями. Основные термины VBA и редактора VBE приведены в глоссарии. Файлы рабочих книг с поддержкой макросов для каждой главы размещены на сайте издательства.
Примеры страниц (скриншоты)
Оглавление
Введение ................................................................................................................................. 11
Язык VBA ................................................................................................................................. 11
Новинки Excel 2019 и службы Power ........................................................................................... 11
Зачем нужен VBA в Excel 2019? .................................................................................................. 17
Объектно-ориентированное программирование ........................................................................... 18
Объект ..................................................................................................................................... 19
Объектная модель Microsoft Excel 2019 ....................................................................................... 19
Объектная модель VBA ............................................................................................................. 20
Объект Application .................................................................................................................... 20
Классы..................................................................................................................................... 21
Свойства ................................................................................................................................. 22
Методы ................................................................................................................................... 22
События .................................................................................................................................. 24
Глава 1. Основные понятия VBA ................................................................................................ 25
Базовые конструкции языка Visual Basic ..................................................................................... 25
Типы данных в VBA ................................................................................................................... 26
Константы и переменные, переменные объектов ......................................................................... 28
Область действия переменных и констант ................................................................................... 28
Объявление констант и переменных ........................................................................................... 29
Начало работы .......................................................................................................................... 29
Настройка безопасности ............................................................................................................ 32
Запись макроса ......................................................................................................................... 34
Имя макроса ............................................................................................................................. 34
Разработка проекта ................................................................................................................... 35
Создание модуля ....................................................................................................................... 37
Создание модуля с помощью контекстно-зависимого меню ........................................................... 38
Окно кода................................................................................................................................. 38
Оператор Option Explicit ............................................................................................................. 39
Первая процедура ..................................................................................................................... 40
Объявление переменной в VBA ................................................................................................... 41
Оператор Debug.Print ................................................................................................................ 42
Автоматический ввод атрибутов команд ..................................................................................... 44
Структура кода процедуры ....................................................................................................... 45
Метод Worksheets.Activate ........................................................................................................ 45
Активная ячейка ActiveCell ....................................................................................................... 46
Открытие книги с макросом ...................................................................................................... 47
Ввод данных ........................................................................................................................... 49
Оператор With ........................................................................................................................ 50
Свойство Selection .................................................................................................................. 51
Свойство Orientation ............................................................................................................... 52
Объект Range .......................................................................................................................... 53
Кнопка (элемент управления ActiveX) ........................................................................................ 54
Свойство Offset ....................................................................................................................... 55
Функция Environ .................................................................................................................... 56
Функция MsgBox .................................................................................................................... 57
Константы табуляции Chr(9) и перевода строки Chr(10) ........................................................... 59
Диалоговое окно, создаваемое функцией InputBox .................................................................. 60
Переменная типа String ......................................................................................................... 61
Переменная типа Long ........................................................................................................... 61
Переменная типа Byte ............................................................................................................ 62
Методы Protect и Unprotect...................................................................................................... 62
Запуск макроса при помощи нажатия сочетания клавиш ........................................................... 64
Как удалить модуль? ..................................................................................................................... 66
Глава 2. Основы программирования в VBA ...................................................................................... 69
Ячейка и диапазон ячеек ............................................................................................................... 69
Арифметические выражения ........................................................................................................ 70
Правила записи арифметических выражений ..................................................................... 71
Арифметические выражения в ячейке ................................................................................. 71
Арифметические выражения с ячейками ............................................................................. 72
Обрамление ячейки — метод BorderAround ............................................................................... 73
Оператор With ................................................................................................................................ 74
Вложенные операторы With .......................................................................................................... 75
Генерация случайных чисел RAND .............................................................................................. 76
Перевод градусов по Фаренгейту в градусы по Цельсию .......................................................... 77
Замена значений формул числом ................................................................................................. 78
Работа с цветом .............................................................................................................................. 81
Функция RGB ......................................................................................................................... 81
Свойства Color и ColorIndex ................................................................................................. 82
Свойство Color .............................................................................................................. 82
Свойство ColorIndex ..................................................................................................... 82
Палитра цветов .............................................................................................................. 86
Подсчет цветов в рисунке ............................................................................................ 88
Заливка ячейки цветом ................................................................................................. 91
Защита ячеек рабочего листа от форматирования ..................................................... 93
Выделение ячеек по цветовому соответствию в диапазоне ...................................... 94
Заливка строк с заданным шагом ................................................................................ 95
Выделение миганием .................................................................................................... 96
Календарь ...................................................................................................................... 98
Заливка ячеек, содержащих формулы ............................................................................... 100
Подсветка минимального и максимального значений .......................................................... 101
Цветовая шкала .............................................................................................................. 103
Глава 3. Логические операторы ........................................................................................ 105
Оператор If...Then...Else.................................................................................................... 105
Операторы сравнения ...................................................................................................... 105
Неполная форма оператора If...Then .................................................................................. 107
Полная форма оператора If...Then...Else ............................................................................ 108
Оператор ElseIf ..................................................................................................................... 108
Вложенные логические операторы ............................................................................................ 109
Примеры использования логических операторов ..................................................................... 110
Свойство Name ..................................................................................................................... 110
Свойство Value ..................................................................................................................... 110
Функции IsEmpty и IsNumeric ............................................................................................. 111
Свойство Range.HasFormula ............................................................................................... 111
Переход к ячейке A2019 ...................................................................................................... 112
Пример с оператором Case ................................................................................................. 113
Функция InputBox ................................................................................................................ 115
Оператор GoTo ..................................................................................................................... 116
Проверка существования файла ......................................................................................... 117
Свойства объекта Application .............................................................................................. 118
Глава 4. Операторы цикла .................................................................................................. 119
Цикл For...To...Step...Next ................................................................................................... 119
Цикл For...To...Next .............................................................................................................. 120
Заполнение столбца ............................................................................................................ 121
Заполнение столбца с большим шагом .................................................................................. 122
Отрицательный шаг ............................................................................................................. 122
Выход из цикла по условию ................................................................................................. 123
Кнопка для запуска макроса (элемент управления формы) ..................................................... 124
Вложенный цикл For...To...Next .............................................................................................. 125
Цикл For...Each ............................................................................................................................ 127
Цикл Do...Loop ............................................................................................................................. 128
Цикл While...Wend ........................................................................................................................ 131
Время работы программы ........................................................................................................... 132
Глава 5. Функции, определенные пользователем .......................................................................... 139
Построение функций ................................................................................................................ 139
График функции одной переменной .................................................................................. 139
Структура кода функции пользователя .............................................................................. 140
График функции одной переменной (продолжение) ........................................................ 140
График кусочно-непрерывной функции с двумя условиями ........................................... 143
График кусочно-непрерывной функции с тремя условиями ............................................ 145
Названия формул на английском языке ............................................................................. 148
Пользовательская функция с тремя аргументами ............................................................. 149
Создание собственной категории ........................................................................................ 150
Функция без параметров ..................................................................................................... 152
Переименование рабочего листа ........................................................................................ 152
Функция с аргументом типа Range .................................................................................... 153
Функция с массивом ......................................................................................................... 155
Функция с массивом в качестве аргумента ........................................................................... 156
Вызов функции из процедуры ............................................................................................ 158
Вызов процедуры, использующей функцию, из другой процедуры ......................................... 159
Запись названий формул ..................................................................................................... 161
Вычисление определенного интеграла .................................................................................. 162
Метод прямоугольников ....................................................................................................... 163
Метод трапеций ................................................................................................................... 163
Метод Симпсона .................................................................................................................. 164
Переключатели OptionButton ................................................................................................ 167
Глава 6. Пользовательская форма .......................................................................................... 171
Создание форм средствами VBA ............................................................................................. 171
Форма UserForm .................................................................................................................... 171
Семейство форм ................................................................................................................... 172
Свойства формы ................................................................................................................... 172
Разметочная сетка ................................................................................................................ 174
Методы формы ..................................................................................................................... 175
События формы ................................................................................................................... 175
Командная кнопка для показа формы ................................................................................... 176
Элементы управления ......................................................................................................... 178
Префиксы .......................................................................................................................... 181
Элемент управления Label .................................................................................................. 181
Элемент управления CommandButton .................................................................................. 184
Элемент управления TextBox .............................................................................................. 187
Элементы управления OptionButton и Frame ........................................................................ 190
Ключевое слово Me............................................................................................................ 193
Элемент управления ScrollBar ............................................................................................ 194
Элемент управления ListBox ............................................................................................... 198
Элемент управления ComboBox .......................................................................................... 201
Элемент управления Image ................................................................................................. 204
Элемент управления SpinButton .......................................................................................... 209
Элемент управления TabStrip ............................................................................................. 213
Элементы управления CheckBox и MultiPage ....................................................................... 216
Элемент управления RefEdit ............................................................................................... 220
Элемент управления ToggleButton ...................................................................................... 223
Пользовательский элемент управления ................................................................................ 225
Элементы управления формы ............................................................................................... 226
Элемент управления Полоса прокрутки ................................................................................. 227
Глава 7. Программирование объектов Shape ......................................................................... 231
Типы объектов, свойства и методы семейства Shapes ............................................................. 231
Тип объекта msoShapeRectangle (прямоугольник) с заливкой (Fill) ......................................... 232
Тип объекта msoConnectorCurve (соединительная линия) ..................................................... 234
Метод AddConnector ............................................................................................................ 235
Метод Patterned ................................................................................................................... 236
Рисование линии: метод AddLine ....................................................................................... 238
Тип объекта msoShapeSmileyFace....................................................................................... 239
Свойство Name ..................................................................................................................... 240
Стрелка ................................................................................................................................. 241
Метод FillFormat.OneColorGradient .......................................................................................... 243
Текстовый фрейм ................................................................................................................. 243
Тип фигуры msoShapeHeart (сердце) с заливкой (Fill) ..................................................... 245
Метод Group ......................................................................................................................... 246
Создание выноски с текстовым фреймом .......................................................................... 247
Свойство ThreeD .................................................................................................................. 248
Частичное и полное удаление фигур .................................................................................. 250
Оператор Set ......................................................................................................................... 252
Создание собственных элементов инфографики ...................................................................... 253
Фракталы ............................................................................................................................. 255
Тип данных, определенный пользователем ....................................................................... 256
Фракталы из треугольников ................................................................................................ 257
Фракталы из многоугольников ........................................................................................... 261
Фракталы из четырехугольников ....................................................................................... 263
Глава 8. Работа с ячейками и областями ............................................................................. 267
Объект Application ............................................................................................................. 267
Свойства объекта Application .............................................................................................. 267
Методы объекта Application ................................................................................................ 268
Объект Range ........................................................................................................................ 269
Адресация ячеек ................................................................................................................... 269
Свойства объекта Range ...................................................................................................... 270
Методы объекта Range ........................................................................................................ 271
Объект Selection ........................................................................................................................... 272
Объект Cell ................................................................................................................................... 272
Выделение нескольких областей ................................................................................................ 272
Выделение последней ячейки в диапазоне ................................................................................ 273
Свойство Range.End .................................................................................................................... 275
Выделение ячеек с формулами ................................................................................................... 276
Выделение используемого диапазона данных .......................................................................... 278
Форматирование объединенных ячеек ...................................................................................... 278
Выделение по условию................................................................................................................ 279
Удаление символов из ячеек ....................................................................................................... 280
Убираем текст .............................................................................................................................. 282
Имена и фамилии ......................................................................................................................... 283
Метод Delete ................................................................................................................................. 284
Метод Clear .................................................................................................................................. 285
Метод Application.Goto ............................................................................................................... 286
Скрытие данных ........................................................................................................................... 286
Копирование и специальная вставка .......................................................................................... 286
Поиск минимума и максимума в диапазоне .............................................................................. 287
Глава 9. Работа с данными ......................................................................................................... 289
Массив из трех элементов ........................................................................................................... 289
Динамический массив данных .................................................................................................... 291
Сравнение областей на одном листе .......................................................................................... 293
Сравнение областей на разных листах ....................................................................................... 294
Сортировка ............................................................................................................................. 298
Сортировка диапазона данных ........................................................................................... 300
Сортировка областей (блоков) ............................................................................................ 301
Простая сортировка блоков ................................................................................................. 301
Сортировка блоков с изменением ее условий ......................................................................... 303
Сортировка по цвету ............................................................................................................ 305
Контроль автофильтра посредством VBA ................................................................................. 308
Команда Итоги ...................................................................................................................... 308
Сортировка данных при помощи Среза..................................................................................... 311
Сводные таблицы PivotTable ...................................................................................................... 316
Глава 10. Автоматизация диаграмм ............................................................................................ 319
Объектная модель диаграмм ....................................................................................................... 319
Типы диаграмм .................................................................................................................... 321
Свойства объекта Chart ....................................................................................................... 324
Методы объекта Chart ......................................................................................................... 324
Первая диаграмма .............................................................................................................. 325
Создание диаграммы с помощью VBA .................................................................................. 328
Коническая гистограмма ..................................................................................................... 332
Печать диаграмм .................................................................................................................. 334
Удаление диаграммы ........................................................................................................... 336
Форматирование параметров диаграммы .................................................................................. 337
Форматирование цветов поверхности ....................................................................................... 339
Добавление линии тренда ........................................................................................................... 341
Геолокация ................................................................................................................................... 345
Изменение прозрачности ............................................................................................................ 347
Красивые узоры ........................................................................................................................... 349
Глава 11. Программирование объектов и событий ....................................................................... 353
Где и как создаются процедуры обработки событий? .............................................................. 354
Процедура для объекта ЭтаКнига ..................................................................................... 355
События, связанные с нажатием кнопок мыши ........................................................................ 356
Процедура в модуле ............................................................................................................. 356
Событие для объекта Worksheet (Лист) .............................................................................. 357
Ключевое слово ByVal и параметр Target .......................................................................... 358
Очистка ячейки .................................................................................................................... 359
Свойства ScrollRow и ScrollColumn .................................................................................... 360
События активации и деактивации ............................................................................................ 360
Свойство приложения ActiveWindow .................................................................................. 360
Активный лист ..................................................................................................................... 361
Число обращений к макросу ............................................................................................... 362
Управление выделением области ....................................................................................... 363
События Activate и Deactivate рабочего листа .................................................................. 364
Двойной щелчок левой кнопкой мыши ............................................................................. 365
Щелчок правой кнопкой мыши .......................................................................................... 366
Введите пароль ..................................................................................................................... 366
Событие закрытия книги ..................................................................................................... 368
Событие сохранения книги ................................................................................................. 368
Глава 12. Операторы даты и времени ................................................................................... 371
Вывод даты и времени в окно Immediate оператором Debug.Print ......................................... 371
Печать даты и времени с помощью функции CDate ................................................................ 372
Функции DateSerial и TimeSerial ................................................................................................ 373
Текущие дата и время .................................................................................................................. 373
Текущие дата и время с учетом минут и секунд .............................................................................. 374
Функция Weekday — день недели ................................................................................................... 374
Функция Format ........................................................................................................................... 375
Функция DateDiff ......................................................................................................................... 377
Функция DatePart ........................................................................................................................ 377
Функция WeekdayName ............................................................................................................... 378
Вывод сообщения на 3 секунды ................................................................................................. 379
Метод Application.OnTime ........................................................................................................... 380
Автоматическое заполнение ячеек датами методом AutoFill ............................................................ 381
Подсветка даты ............................................................................................................................ 383
Поиск даты ................................................................................................................................... 385
Календарь ..................................................................................................................................... 386
Календарь по месяцам ................................................................................................................. 389
Календарь по неделям ................................................................................................................. 392
Определение возраста ................................................................................................................. 395
Глава 13. Действия с рабочей книгой ........................................................................................... 397
Свойства объекта Workbook ........................................................................................................ 397
Методы объекта Workbook .......................................................................................................... 398
Событие и метод Open ................................................................................................................ 399
Открытие рабочей книги методом Workbooks.Open ....................................................................... 400
Свойство Application.Dialogs для работы со встроенными диалоговыми окнами ................................ 401
Открытие рабочей книги в диалоговом окне ................................................................................. 402
Открытие приложения Блокнот .................................................................................................. 404
Свойство Workbook.Name ........................................................................................................... 405
Создание рабочей книги .............................................................................................................. 406
Имя приложения .......................................................................................................................... 406
Сохранение рабочей книги ......................................................................................................... 408
Метод Workbook.Save .......................................................................................................... 408
Метод Workbook.SaveAs ...................................................................................................... 408
Метод Workbook.SaveCopyAs .............................................................................................. 411
Сохранение всех книг и выход из программы .................................................................. 412
Сохранение всех книг и выход по запросу ........................................................................ 413
Защита рабочей книги методом Workbook.Protect ............................................................ 413
Объект Worksheet ........................................................................................................... 414
Свойства объекта Worksheet................................................................................................ 414
Методы объекта Worksheet и семейства Worksheets ......................................................... 414
Защита рабочего листа методом Worksheet.Protect .......................................................... 415
Деление рабочего листа на страницы для печати ..................................................................... 419
Глава 14. Файловые операции ................................................................................................ 421
Форматы файлов Microsoft Excel ............................................................................................... 421
Метод CreateTextFile для объекта FileSystemObject ................................................................. 422
Список файлов указанной папки ................................................................................................ 423
Режим доступа Input/Output ........................................................................................................ 424
Файлы из Application.AddIns ....................................................................................................... 426
Объект FileDialog ........................................................................................................................ 428
Функция GetAttr ........................................................................................................................... 430
Документирование информации о файле .................................................................................. 431
Проверка существования файла ................................................................................................. 433
Оператор Kill для удаления файла.............................................................................................. 434
Оператор FileCopy для копирования файла .............................................................................. 435
Переименование файла ............................................................................................................... 436
Перемещение файла .................................................................................................................... 436
Глава 15. Отладка программ и сообщения об ошибках ................................................................... 439
Возникновение ошибок ............................................................................................................... 439
Выявление и исправление ошибок ............................................................................................. 440
Три окна для просмотра ошибок ................................................................................................ 442
Окно просмотра Immediate ..................................................................................................... 442
Окно Locals ........................................................................................................................... 444
Окно наблюдения Watches .................................................................................................. 445
Объект Err ......................................................................................................................... 448
Оператор On Error ............................................................................................................. 448
Оператор On Error Resume Next ......................................................................................... 449
Оператор On Error GoTo: вариант 1 ................................................................................... 450
Оператор On Error GoTo: вариант 2 ................................................................................... 450
Константы xlDisabled и xlInterrupt свойства Application.EnableCancelKey ................................ 452
Массив листов ...................................................................................................................... 453
Команда меню Debug .................................................................................................................. 453
Глава 16. Программирование связей ............................................................................................. 455
Гиперссылки................................................................................................................................. 455
Кнопка гиперссылки .................................................................................................................... 457
Передача данных из Excel в Word .............................................................................................. 458
Внедрение документа Word в Excel ........................................................................................... 459
Передача данных из Excel в PowerPoint .................................................................................... 461
Передача данных из PowerPoint в Excel .................................................................................... 463
Приложение 1. Глоссарий терминов Visual Basic for Applications ................................................. 465
Приложение 2. Глоссарий терминов Visual Basic Editor .............................................................. 469
Приложение 3. Описание электронного архива ........................................................................ 485
Предметный указатель ........................................................................................................... 487