Создание программных модулей vba для обработки табличных данных ms excel

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ, МОЛОДЕЖИ И СПОРТА УКРАИНЫ

ДОНЕЦКИЙ ПОЛИТЕХНИЧЕСКИЙ ТЕХНИКУМ

МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ

ПО ИЗУЧЕНИЮ ТЕМЫ «VBA в EXCEL»

В КУРСЕ «ОФИСНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ»

для студентов специальности 5.05010301

«Разработка программного обеспечения»

Методические рекомендации по изучению темы «VBA в EXCEL» в курсе «Офисное программное обеспечение» для студентов дневного отделения специальности 5.05010301 «Разработка программного обеспечения»

Федосеенко Н.А. – преподаватель первой категории ПК информатики и программирования ДПТ

Приводятся общие сведения о встроенных объектах Excel VBA, их свойствах и методах, справочную информацию об операторах, типах данных, командах и стандартных функциях языка, указания по выполнению лабораторных работ, тестовые задания для самостоятельной работы студентов, контрольные вопросы.

Для студентов и преподавателей Донецкого политехнического техникума.

Рецензент: председатель цикловой комиссии информатики и программирования, преподаватель высшей категории ДПТ Величко П.И.

Методические указания рассмотрены на заседании предметной комиссии информатики и программирования Донецкого политехнического техникума.

Протокол № ______от __________________

ВВЕДЕНИЕ

В результате изучения дисциплины «Офисное программное обеспечение» студент должен знать современное состояние и направление развития компьютерной техники и программных средств, владеть основами автоматизации экономических и управленческих задач, знать основы создания информационных систем и использования новых информационных технологий переработки информации. Важная роль отводится алгоритмизации и программированию.

В настоящих методических указаниях рассматриваются вопросы технологии программирования на языке VBA (Visual Basic for Applications) в среде табличного процессора Microsoft Excel. Этот язык является подмножеством современного объектно-ориентированного языка программирования Microsoft Visual Basic, позволяющего создавать событийно-управляемые приложения и предоставляющего широкие возможности визуального программирования. VBA является также базовым языком макрокоманд для других программных средств фирмы Microsoft: Access, PowerPoint и др. Овладение студентами основами программирования позволит им в полной мере использовать мощные возможности табличного процессора, автоматизировать обработку больших массивов числовой и текстовой информации, создавать гибкие программы со сложной логикой, разрабатывать дружественный интерфейс пользователя.

Настоящее руководство содержит общие сведения о языке VBA, указания к выполнению лабораторных работ, варианты заданий и приложения. Приложения содержат описание объектов Excel VBA, операторов, типов данных, команд и функций работы с числами и строковыми выражениями.

Изложенный материал может быть использован на лекциях, лабораторных работах и в самостоятельной работе студентов в течение изучения предмета «Офисное программное обеспечение».

ОБЩИЕ СВЕДЕНИЯ

Целью программирования на языке VBA является создание макросов, облегчающих работу в среде Excel или написание собственных специализированных функций, предназначенных для решения конкретных задач пользователя.

Макрос — это программа, выполняющая действия с электронными таблицами, группой ячеек, одной конкретной ячейкой или фрагментом текстового документа. Результатом работы макроса обычно является изменение содержания или вида ячеек электронной таблицы, текста.

Программирование на языке VBA основывается на четырех основных понятиях: объект, переменная, оператор и команда.

Объектами в Excel является все то, с чем работает пользователь электронной таблицы — рабочие книги, электронные таблицы, ячейки и т.д. Каждый объект обладает рядом признаков, описывающих объект или характеризующих состояние объекта. Эти признаки называются свойствами объекта. Например, одним из свойств рабочего листа электронной таблицы является имя листа. К свойствам ячейки относятся содержимое ячейки, формула и различные параметры форматирования ячейки.

Объекты могут содержать другие объекты. Книга Excel содержит рабочие листы. В свою очередь, рабочие листы содержат ячейки. В целом, все объекты Excel образуют строгую иерархию. На рис. 1 приведена структура объекта ActiveCell («Текущая ячейка»).

При обращении к какому-либо свойству конкретного объекта используется следующий синтаксис:

..

Например, чтобы прочитать формулу, содержащуюся в текущей ячейке, нужно написать ActiveCell.Formula. Здесь ActiveCell — объект, a Formula — его свойство.

Некоторые объекты являются составной частью других объектов. Так, объект Interior («Заливка») может относиться к текущей ячейке, диапазону ячеек или к ячейке электронной таблицы, находящейся на другом листе рабочей книги. Чтобы уточнить, какую именно заливку

мы имеем в виду, необходимо указать принадлежность объекта Interior. Принадлежность объекта указывается соответствующей приставкой перед именем объекта:

Например, цвет заливки текущей ячейки обозначается следую­щим образом: ActiveCell.Interior.Color. Наиболее употребительные объекты Excel и их свойства приведены в приложении А.

Рисунок 1 — Структура объекта ActiveCell

Кроме свойств, у объектов есть ряд методов. Метод — это действие, применяемое к объекту. Например, одним из методов для объекта Range (Диапазон) является ClearContents (Очистить содержимое). Этот метод позволяет очистить содержимое диапазона. При обращении к какому-либо методу конкретного объекта используется следующий синтаксис:

..

Например: Range(«Al:A10»).ClearContents.

Язык Visual Basic for Applications позволяет разрабатывать событийно-управляемые приложения. Событие — действие, распознаваемое объектом (формой или элементом управления). Событийно-управляемое приложение выполняет код VBA в ответ на события. С каждой формой и элементом управления связан стандартный набор событий. Если происходит одно из этих событий и в соответствующей процедуре обработки события имеется код, VBA вызывает этот код. Например, большинство объектов распознает событие Click — если пользователь щелкнет командную кнопку или на поле формы, выполняется код, внесенный в процедуру события Click, соответственно, кнопки и формы.

Событие может быть вызвано пользователем (например, нажатие клавиши), системой (например, событие таймера) или программным кодом.

Переменные — это место для временного хранения значений. Переменные находятся в оперативной памяти компьютера и существуют только во время работы программы. Когда программа завершается, переменные из памяти удаляются. В переменных могут храниться как простые данные (например, числа или текстовые строки), так и объекты. Типы данных приведены в приложении С.

Переменные характеризуются своим именем. Имя переменной должно всегда начинаться с буквы или знака подчеркивания, может содержать знаки подчеркивания и быть длиной до 255 символов. Имена переменных не должны содержать внутри себя пробелы.

Операторы производят действия с объектами и переменными. Операторы делятся на арифметические, логические, текстовые и операторы сравнения. Полный список операторов приводится в приложении В.

Лабораторная работа

Тема: «Создание программных модулей VBA для обработки табличных данных MS Excel «.

Цель работы: научиться обрабатывать табличные данные в среде VBA.

Подготовительная часть

Дать краткую характеристику следующим понятиям:

  1. Описать объекты, их свойства, методы и события: Cells, Range, Sheets, ListBox

  2. Реализовать пример программы на VBA и предоставить преподавателю в электронном виде.

Практическая часть.

Задание: Создать проект, формы пользователя и программные модули для обработки данных, организованных в таблице Excel соответствующей варианту задания (варианты заданий приведены в файле «Задания»).

Задание № 1 Ввод данных в таблицу.

Создать книгу Excel под названием ЛР_VBA.

На листе 1 создать структуру таблицы согласно своему варианту (номер по журналу).

Реализовать ввод данных в таблицу, разработав для этого форму в VBA.

Задание № 2 Создание главного меню.

Создать главное меню, активирующееся при открытии книги. На этой форме расположить кнопку ВВОД, открывающую соответствующую форму для ввода данных.

Задание № 3 Выполнение расчетов.

Создать форму и программный модуль для выполнения расчетов, соответствующих своему варианту.

На главном меню создать кнопку для вызова формы произведения расчетов.

Подготовительная часть

Рассмотрим пример решения следующей задачи:

Создать проект, формы пользователя и программные модули для обработки сессии студентов:

1                 Создать таблицу следующей структуры:

–                   индекс группы;

–                   фамилия студента;

–                   оценки по пяти экзаменам;

–                   стипендия;

2                 Добавить в таблицу произвольное количество строк;

3                 Рассчитать стипендию студентам по результатам сессии, причем отличникам стипендию увеличить на 100%, сдавшим без троек – увеличить на 30%, а при наличии хотя бы одной двойки стипендию не начислять;

4                 Создать на 2-ом листе книги ведомость для выдачи стипендии студентам;

5                 Сортировать данные в таблице по выбранной колонке;

6                 Изменить показатели студента с заданной фамилией;

7                 Удалить из таблицы данные о студентах, имеющих более двух двоек.

Пример таблицы:

 Индекс группы

ФИО студента

Экзамен 1

Экзамен 2

Экзамен 3

Экзамен 4

Экзамен 5

Стипендия 

УТР02Б

Петров

5

4

5

4

2

0

УТР02А

Иванов

4

5

3

3

3

100

УТР02А

Климова

5

4

5

4

3

100

УТР02А

Морозова

3

3

3

3

3

100

УТР02А

Абрамова

4

4

5

3

3

100

УТР02А

Сидоров

4

4

3

3

4

100

УТР02Б

Жуковская

4

3

5

4

4

100

УТР02А

Ющенко

3

3

3

3

3

100

УТР02Б

Жукова

5

5

5

5

5

200

Для решения данной задачи предлагается следующий проект:

Программный модуль «ВВОД» (вызывается и в режиме «ДОБАВИТЬ»):

Dim i As Double

Private Sub UserForm_Activate()

   ‘ Подсчет количества строк в таблице и вывод  на форму в поле txtN 

   i = 1

   Do While Cells(i, 1) » «

      i = i + 1

   Loop

   txtN.Enabled = True

   txtN.Text = CStr(i — 2)

   txtN.Enabled = False

End Sub

Программный модуль «СОРТИРОВКА»:

Программный модуль «КОРРЕКТИРОВКА»: 

МодульKOR

Программный модуль «КОРРЕКТИРОВКА» (продолжение): 

 Модуль KOR1

Программный модуль «УДАЛЕНИЕ»:

Варианты индивидуальных заданий к лабораторной работе:

Вариант 1

1.  Создать таблицу, которая содержит сведения о месячной заработной плате рабочих завода.

Структура таблицы:

—              табельный номер;

—              фамилия рабочего;

—              наименование цеха;

—              размер заработной платы в месяц.

2.            Предусмотреть режим добавления в таблицу произвольного количества строк.

3.            Вычислить:

  • общую сумму выплаты за месяц по заданному цеху

  • среднемесячный заработок этого цеха.

4.   Создать на 2 листе книги ведомость для начисления заработной платы рабочих заданного цеха.

5.            Сортировать данные в таблице по заданному столбцу.

6.Увеличить размер заработной платы у рабочего с заданной фамилией на X% (значение Х задано).

7.            Удалить из таблицы 2 записи. Номера записей задать.

Вариант 2

1.        Создать таблицу, которая содержит сведения о количестве изделий, собранных сборщиками цеха за неделю.

Структура таблицы:

—              фамилия сборщика;

—              количество изделий, собранных им ежедневно в течение шестидневной недели, то есть – в понедельник, вторник, и т.д.

2.            Предусмотреть возможность добавления в таблицу произвольного количества строк.

3.            Определить:

  • общее количество деталей, собранных сборщиками цеха;

  • фамилия сборщика, который собрал наибольшее число изделий, и определить день, когда он достиг наивысшей производительности труда.

4.            Создать на 2 листе книги таблицу, которая содержит следующую информацию: фамилию сборщика и общее количество детали, собранное им за неделю.

5.            Сортировать данные в таблице по заданному столбцу.

6. Увеличить в Х раз (значение Х задано) количество деталей, собранных в заданный день недели.

7.            Удалить из таблицы запись о сборщике с заданной фамилией.

Вариант 3

1.            Создать таблицу, которая содержит сведения о количестве изделий категории А, B, С, собранных рабочим за месяц.

               Структура таблицы:

—         фамилия сборщика;

—         наименование цеха;

—         количество изделий (по категориям), собранных рабочим за месяц;

2.            Предусмотреть возможность добавления в таблицу произвольного количества строк.

3.            Рассчитать:

  • общее количество изделий каждой категории;

  • общее количество изделий, собранных всеми рабочими заданного цеха;

  • средний размер заработной платы работников заданного цеха.

4.      Создать на 2 листе книги ведомость для начисления заработной платы рабочих заданного цеха.

5.            Сортировать данные в таблице по заданному столбцу.

6.            Уменьшить количество изделий заданной категории на Х% (значение Х — задано).

7.            Удалить из таблицы записи, в которых количество изделий заданной категории  менее Y штук (значение Y — задано).

Вариант 4

1.            Создать таблицу, которая содержит сведения о телефонных абонентах.

Структура таблицы:

—              фамилия абонента;

—              номер телефона;

—              год установки телефона;

—              наличие задолженности в оплате.

2.            Предусмотреть возможность добавления в таблицу произвольного количества строк.

3.            Определить:

  • общее количество телефонов, установленных начиная с заданного года по нынешний год.

  • по заданной фамилии абонента номер его телефона.

4.            Создать на 2 листе книги таблицу, которая содержит фамилии задолжников и их телефоны.

5.            Сортировать данные в таблице по заданному столбцу.

6.            Изменить номер телефона у абонента с заданной фамилией

7.            Удалить из таблицы запись, которая содержит заданный номер телефона.

Вариант 5

1.            Создать таблицу, которая содержит сведения об ассортименте игрушек в магазине.

Структура таблицы:

—              название игрушки;

—              цена;

—              количество;

—              возрастные границы, например, 2-5, то есть от 2 до 5 лет.

2.            Предусмотреть возможность добавления в таблицу произвольного количества строк.

3.            Определить стоимость самой дорогой игрушки и ее наименование. По вводимым значениям A, B и X выдавать название игрушки, которое по стоимости не превышает X и подходит ребенку от A до B лет.

4.            Создать на 2 листе книги таблицу, которая содержит следующую информацию: наименования игрушек, которые подходят детям от X до Y лет и их цены.

5.            Сортировать данные в таблице по заданному столбцу.

6.            Увеличить цену игрушки для заданной возрастной группы на Z% (значение Z – задано).

7.            Удалить из таблицы запись об игрушке с заданным названием.

Вариант 6

1.            Создать таблицу, которая содержит сведения о сдаче студентами первого курса  сессии.

        Структура таблицы:

—         группа;

—         фамилия студента;

—         оценка по 5 экзаменам

—         признак участия в общественной работе: «Да»/»Нет».

2.            Предусмотреть возможность добавления в таблицу произвольного количества строк.

3.             Определить общее число активистов в списке.

4.            Создать на 2 листе книги таблицу, содержащую ведомость начисления стипендии студентам заданной группы. Рассчитать размер стипендии по следующему принципу. Студенту, получившему все оценки «5» и активно участвующему в общественной работе, назначается повышенная стипендия – доплата 50%. Студенту, получившему «4» и «5», назначается обычная стипендия – ее необходимо задать. Студенту, получившему одну оценку «3», но активно занимающемуся общественной работой, также назначается обычная стипендия. Остальным студентам стипендия не назначается. Предусмотреть ввод размера обычной стипендии.

5.            Сортировать данные в таблице по заданному столбцу.

6.            Изменить признак участия в общественной жизни студентов с оценками «55555» на противоположный.

7.            Удалить из таблицы записи о студентах, которые имеют хотя бы одну двойку.

Вариант 7

1.            Создать таблицу, которая содержит информацию о личной коллекции книголюба.
Структура таблицы:

—         шифр книги;

—         название книги;

—         фамилия автора;

—         год издания;

—         место расположения (номер стеллажа, номер шкафа, номер полки);

2.            Предусмотреть возможность добавления в таблицу произвольного количества строк.

3.            Определить:

  • общее количество книг в коллекции, а также число книг заданного года издания.

  • по заданному автору и названию книги информацию о местонахождении книги.

4.            Создать на 2 листе книги таблицу, которая содержит информацию о книге заданного автора, которая находится в коллекции.

5.            Сортировать данные в таблице по заданному столбцу.

6.            Изменить место расположения книг самого позднего года издания.

7.            Удалить из таблицы записи о книгах, изданных до заданного года.

Вариант 8

1.            Создать таблицу, которая содержит сведения о сдаче сессии студентами.
Структура таблицы:

—              группа;

—              фамилия студента;

—              результаты экзаменов по 5 предметам (например, 55445);

—              результаты зачетов по 5 предметам (например, ЗЗНЗЗ, где «З» – зачет, а «Н» — незачет).

2.            Предусмотреть возможность добавления в таблицу произвольного количества строк.

3.            Вычислить средний балл, полученный каждым студентом заданной группы, и  средний балл этой группы, по каждому предмету. Определить общее количество задолженностей (по экзаменам и зачетам в сумме) каждого студента заданной группы и общее число студентов-должников той же группы.

4.            Создать на 2 листе книги таблицу, которая содержит сведения о неуспевающих студентах: группу, фамилию и количество задолженностей.

5.            Сортировать данные в таблице по заданному столбцу.

6.            Изменить результат экзамена по заданному предмету студенту с заданной фамилией.

7.            Удалить из таблицы записи о студентах, которые имеют три задолженности.

Вариант 9

1.            Создать таблицу, которая содержит сведения о рейсах Аэрофлота.
Структура таблицы:

—              номер рейса;

—              пункт назначения;

—              дата вылета;

—              время вылета;

—              время прибытия;

—              количество свободных мест в самолете.

2.            Предусмотреть возможность добавления в таблицу произвольного количества строк.

3.            Определить:

  • номера рейсов и время отправления самолетов в заданный город;

  • по заданному городу и дате отправления  количество  свободных мест на рейсы;

  • общее количество рейсов за сутки в заданный город.

4.            Создать на 2 листе книги таблицу, которая содержит номера рейсов, дату и время отправления самолетов в заданный город.

5.            Сортировать данные в таблице по заданному столбцу.

6.            Изменить время вылета и время прибытия у заданного рейса.

Вариант 10

1.            Создать таблицу, которая содержит сведения об ассортименте обуви в магазине.
Структура таблицы:

—              артикул обуви (артикул начинается с буквы Д – для дамской обуви, М, – для мужской, П – для детской обуви, например, Д0321);;

—              наименование;

—              размер;

—              количество пар обуви;

—              стоимость.

2.            Предусмотреть возможность добавления в таблицу произвольного количества строк.

3.            Определить:

  • стоимость обуви заданного артикула, и какие размеры  имеются в наличии;

  • общее количество пар детской обуви, имеющейся в магазине, и ее суммарную стоимость.

4.            Создать на 2 листе книги таблицу, которая содержит информацию о всех моделях  обуви  заданного вида.

5.            Сортировать данные в таблице по заданному столбцу.

6.            Увеличить стоимость обуви с заданным наименованием на Х% (значение Х задано).

Вариант 11

1.            Создать 2 таблицы, содержащие сведения о десяти нападающих хоккейных команд «Динамо» и «Шахтер».

        Структура таблиц:

—         фамилия хоккеиста;

—         число заброшенных им шайб;

—         число сделанных им голевых передач;

—         заработанное штрафное время.

2.            Предусмотреть возможность добавления в таблицы произвольного количества строк.

3.            Вычислить:

  • общее число шайб, забитых хоккеистами каждой команды

  • суммарное штрафное время каждой команды

4.            Создать на 2 листе книги таблицу, которая содержит фамилию шести лучших игроков из обеих команд (по 3 игрока из каждой команды), и сумму очков каждого игрока (голы + передача).

5.            Сортировать данные в таблице по заданному столбцу.

6.            Для хоккеистов «Динамо» уменьшить количество забитых шайб на заданное число, если это число больше 0.

Вариант 12

1.            Создать таблицу, которая содержит сведения о том, какую из пяти дисциплин желает слушать студент.

        Структура таблицы:

—         фамилия студента;

—         группа;

-наименование пяти дисциплин (выбираемая дисциплина замечается символом «1» иначе – пробел;

—         средний балл успеваемости.

2.            Предусмотреть возможность добавления в таблицу произвольного количества строк.

3.            Определить:

  • количество слушателей каждой дисциплины.

  • число слушателей заданной дисциплины, у которых средний балл превышает заданный.

4.             Создать на 2 листе книги таблицу, которая содержит фамилию, группу и средний балл всех слушателей заданной дисциплины. Если число их превысит заданное, то отобрать студентов, которые имеют более высокий средний балл успеваемости.

5.            Сортировать данные в таблице по заданному столбцу.

6.            Изменить сведения для студента с заданной фамилией.

7.            Удалить информацию о студентах со средним баллом ниже заданного.

ПРИЛОЖЕНИЕ А

ОБЪЕКТЫ EXCEL VBA

Объект/ Перевод/ Принадлежность

Свойство /

Перевод

Описание объекта

или свойства

1

2

3

ActiveCell / Текущая активная ячейка

Address / Адрес

Адрес ячейки, строка вида «АР

Row/ Строка

Номер строки ячейки. Напри­мер, для ячейки ВЗ — число 3

Column / Колонка

Номер колонки ячейки (число). Например, для ячейки ВЗ -число 2

Value / Значение

Данное, содержащееся в ячей­ке. Это свойство является свойством по умолчанию, т.е. если для ActiveCell не указы­вать никаких свойств, то будет считаться, что происходит об­ращение к свойству Value

NumberFormat / Формат числа

Строка, содержащая формат числа (см. меню Формат/ Ячейки/Число/(все форматы))

Horizontal Alignment / Выравнивание по горизонтали

Может быть одним из: xlHAlignCenter — по центру; xHAlignJustiry — по ширине; xlHAlignLeft — по левому краю; xlHAlignRight — по правому краю; xlHAlignCenterAcrossSelection — по центру выделения; xlHAlignFill — с заполнением; xlHAlignGeneral — по значе­нию

Vertical Alingrnent / Выравнивание по вертикали

Может быть одним из: xlVAlignBottom — по нижнему краю; xlVAHgnCenter — по центру; xlVAlignJustify — по высоте; xlVAlignTop — по верхнему краю

Formula / Формула

Строка, содержащая формулу (например, = А1 + В1)

Orientation / Ориентация

Направление размещения текста в ячейке: целое число от -90 до 90 (угол в градусах)

Font / Шрифт / ActiveCell, Selection, Cells, Range

Шрифт объекта с наименованием, размером и другими свойствами. Не может использоваться без указания принадлежности.

Name/

Наименование

Наименование шрифта (Arial, Times New Roman и т.д.)

Size/ Размер

Размер шрифта в пунктах (8,10,14…)

Italic / Курсив

Установка наклона, логическая вели­чина: True — есть, False — нет

Bold/

Полужирный

Установка полужирного шрифта, логическая величина: True — есть, False — нет

Underline /

Подчеркивание

Установка подчеркивания, логиче­ская величина: True — есть, False — нет

Color / Цвет

Код цвета шрифта, целое число от 0 до 16777215

Interior / Заливка / ActiveCell, Selection, Cells, Range

Заливка объекта. Не может использо­ваться без указания принадлежности

Pattern / Узор

Может быть одним из: xlPatternAutomatic, xlPatternChecker, xlPatternCrissCross, xlPatternDown, xlPatternGrayl6, xlPatternGray25, xlPattemGraySO, xlPaternGray75, xlPatternGrayS, xlPatternGrid, xlPatternHorizontal, xlPattemLightDown, xlPatternLightHorizontal, xlPatternLightUp xlPattemLightVertical, xlPatternNone, xlPatternSemiGray75 и др.

Color / Цвет

Код цвета шрифта, целое число от 0 до 16777215

PattemColor / Цвет шаблона

Код цвета шаблона, целое число от 0 до 167772 15

Продолжение прил. А

1

2

3

Borders / Границы/ Active-Cell, Selection, Cells, Range

Общие характеристики всех четырех границ. Не может использоваться без указания принадлежности

Color / Цвет

Код цвета границ, целое число от 0 до 16777215

LineStyle / Вид линии

Характеризует вид линии границ, может быть одним из: xlContinuous — сплошная, xlDash — штрих, xlDashDot — штрих-пунктирная, xlDashDotDot — штрих-пунктир-пунктир, xlDot — пунктирная, xlDouble — двойная или xlLineStyleNone — нет линии

Weight/ Толщина

Толщина линии, может быть одним из: xlHairline — еле заметная, xlThick — тонкая, xlMedium — средняя, xlThin — толстая

Borders (Код_границы) / Одна из четырех границ / Active-Cell, Selection, Cells, Range

Те же свойства, как у объекта Borders

Конкретная граница из четырех: Borders(xlEdgeTop) — верхняя, Borders(xlEdgeBottom) — нижняя, Borders(xlEdgeLeft) — левая, Borders(xlEdgeRight) — правая. Не мо­жет использоваться без указания при­надлежности

Cells(№ строки, № колонки)/ Ячейка

Те же свойства, как у объекта ActiveCell

Обращение к ячейке по номеру строки и колонки. Например, ячейке с адресом ВЗ соответствует Cells(3, 2). Если префикс принадлежности не указан, объект Cells считается относящимся к ActiveSheet

Кап§е(«Адрес ячейки или диапазона») / Диапазон / ActiveSheet, Selection

Те же свойства, как у объекта ActiveCell

Обращение к ячейке или диапазону по адресу. Например, Range(«B3») -обращение к ячейке ВЗ; Range(«Al :С2») — к диапазону ячеек А1:С2. Если префикс принадлежности не указан, объект Range считается относящимся к ActiveSheet

Selection / Выбранный диапазон ячеек/ ActiveSheet

Те же свойства, как у объекта ActiveCell

Группа ячеек, выделенных пользователем

Rows. Count / Количество строк

Количество строк в выбранном диапазоне ячеек

Columns.Count / Количество колонок

Количество колонок в выбранном диапазоне ячеек

ПРИЛОЖЕНИЕ В

ОПЕРАТОРЫ VBA

Знак

Действие

Тип

Приоритет

л

возведение в степень

арифметические

1

изменение знака

2

*

умножение

3

/

деление

3

целочисленное деление

4

Mod

остаток от деления

5

+

сложение

6

вычитание

6

&

слияние строк (конкатенация)

строковый

7

=

равно

сравнения

8

не равно

9

меньше

10

больше

11

меньше либо равно

12

=

больше либо равно

13

Like

подобно

14

Is

в точности такой, как

15

Not

НЕ

логические

16

And

И

17

Or

ИЛИ

18

Примечание:

Тип данных

Размер области памяти в байтах

Описание

Integer

2

Целые числа

Long

4

Длинные целые числа

Single

4

Числа с плавающей точкой одинарной точности

Double

8

Числа с плавающей точкой двойной точности

Currency

8

Числа с фиксированной точкой

Byte 1

1

Целые числа от 0 до 255

String

1 байт на 1 символ

Текстовая информация

Date

8

Даты и время

Boolean

2

Логические значения True и False

Object

4

Ссылка на объект

Variant

16 байтов + 1 байт на 1 символ

Любые из перечисленных типов дан­ных. Является типом по умолчанию

Во время вычисления сложных выражений вначале выполняются операторы с меньшими номерами приоритета, затем с большими. Например, в выражении А1Л3 + 10 вначале выполнится возведение в степень, а затем к полученному результату добавится 10. Если операторы имеют одинаковый приоритет, действия выполняются слева направо.

ПРИЛОЖЕНИЕ С

ТИПЫ ДАННЫХ VBA

ПРИЛОЖЕНИЕ D

КОМАНДЫ VBA

Описательные команды

1. Определение переменных
Синтаксис:

Dim As [, As ]

Описание:

Определение имен и типов переменных, использующихся в мак­росах. Типы данных приведены в приложении С.

Примеры:

  1. Dim A As String

  2. Dim I As Byte, J As Boolean, Диапазон_ячеек As Variant

2. Начало и конец макроса типа подпрограммы
Синтаксис:

Public Sub ([])

End Sub

Описание:

Установка начала и окончания блока команд, составляющих мак­рос. Public Sub… указывает начало, a End Sub — конец блока. Все команды, находящиеся между Public Sub… и End Sub составляют собственно макрос и называются телом подпрограммы.

Примеры:

1) Public Sub Проверка_данных()

Dim A As Double

End Sub

2) Public Sub Упорядочивание(Диапазон)

Dim I As Long, J As Long, К I As Long

End Sub

3. Начало и конец макроса типа функции

Синтаксис:

Public Function ([])

End Function

Описание:

Установка начала и окончания блока команд, составляющих функцию. Public Function… указывает начало, a End Function — конец блока. Все команды, находящиеся между Public Function… и End Function составляют процедуру вычисления функции и называются телом процедуры-функции.

4. Начало и конец блока объектных команд

Синтаксис:

With

End With

Описание:

Установка начала и окончания блока команд, работающих с одним и тем же объектом. With … указывает начало, a End With — конец блока. Команды со свойствами, в начале которых стоит знак «.», находящиеся между With … и End With, считаются относящимися к объекту, имя которого указано после служебного слова With.

Примеры:

1) With Range(«Al :C1 «).Font

.Name = «Times New Roman»

.Size =10

End With

Исполнительные команды

1. Присваивание

Синтаксис:

=

Описание: Вычисление значения и помещение результата в переменную или свойство объекта.

Примеры:

  1. ActiveCell.Font.Size = 14

2. Выполнение действий по условию («Если»)

Синтаксис:

1) If Then

[]

[Else

]

End If

  1. If Then [] [Else Действия, если ложь]

  2. If Then

[]

Elself Then

[]

Elself Then

[]

[Else

]

End If

Описание:

Если условие истинно, выполняются действия после служебного слова Then. Если ложно — действия после служебного слова Else.

Примеры:

1) If А 100 Then

В= 100

Else

В = 0

С=1

End If

2) If Cells(l, 3) = «+» Then Cells(3, 3) = 21

3. Выполнение действий по значению

Синтаксис:

Select Case

Case

=

[Case

= ]

[Case Else

не совпадает ни с одним значением]

End Select

Описание:

Вначале вычисляется выражение, находящееся после Select Case. Полученное значение последовательно сравнивается со всеми значениями в предложениях Case. Если получено равенство, вы­полняются действия после соответствующего предложения Case.

Примеры:

1) Select Case A

Casel

В = «А равно 1»

Case 2

В = «А равно 2»

Case Else

В = «Переменная А не равна 1 или 2»

End Select

2) Select Case Range(«B 1»)

Case «»

Range(«Bl») = 0

Case Is 100

Range («Bl»)= 100

Case Is

Range(«Bl») = 0

End Select

4. Циклические вычисления по счетчику

Синтаксис:

For = То [Step ]

Next

Описание:

Повторение действий указанное количество раз. Переменной, являющейся счетчиком, присваивается начальное значение. Затем на каждом шаге (в каждом цикле) вычисления значение перемен­ной увеличивается на величину шага. Если шаг не указан, он счи­тается равным 1. Вычисления заканчиваются, если значение счет­чика становится больше конечного значения.

Примеры:

1) For I = 1 То 100

А = А+1 Nextl

2) For R = 2 То 20 Step 2

X=X^R

S=S+X

NextR

5. Циклические вычисления по условию

Синтаксис:

1) Do While

Loop

2) Do ШШ

Loop

3) Do

Loop While Условие

4) Do

Loop Until

Описание:

Повторение вычислений до тех пор, пока не выполнится некоторое условие. Формы Do…Loop (1-й и 3-й варианты синтаксиса) со служебным словом While повторяют вычисления, если — истина. Как только оно становится ложным, вычисления прекращаются. Формы Do…Loop со служебным словом Until (2-й и 4-й варианты синтаксиса) повторяют вычисления, если ложно. Если оно становится истинным, вычисления прекращаются. В первом и во втором случае проверяется до начала выполнения цикла, в третьем и четвертом — после. Поэтому команды в циклах третьего и четвертого типа всегда исполняются хотя бы один раз.

Примеры:

1) Do While Count

А = А+1 Loop

2) Do

S = S + Cells(I, J)

Loop Until S 100

ПРИЛОЖЕНИЕ Е

ФУНКЦИИ РАБОТЫ С ЧИСЛАМИ

Abs Модуль числа

Atn Арктангенс

Cos Косинус

Ехр Степень числа е

Hex Шестнадцатиричный формат числа

Int/Fix Целая часть числа

Log Натуральный логарифм

Oct Восьмеричный формат числа

Rnd Генерация случайного числа

Sgn Получение знака числа

Sin Синус

Sqr Квадратный корень числа

Тап Тангенс

Описание функций работы с числами:

Abs (число)

Возвращает абсолютное значение числа, указанного в качестве аргумента функции. Например, обе функции Abs(-l) и Abs(1) воз­вращают значение 1.

Atn (число)

Возвращает значение в радианах арктангенса для числа, указанно­го в качестве аргумента функции. Результат находится в диапазоне от —71/2 до тс/2.

Cos (число)

Возвращает значение косинуса для числа, указанного в качестве аргумента функции. Результат находится в диапазоне от-1 до 1.

Ехр (число)

Возвращает степень числа е (основание натурального логарифма) для числа, указанного в качестве аргумента функции. Константа е приближенно равна 2,718282.

Hex (число)

Возвращает шестнадцатиричный формат числа, указанного в ка­честве аргумента функции.

Int (число)

Fix (число)

Обе функции возвращают целую часть числа, указанного в качестве аргумента. Если аргумент — положительное число, то результат в обоих случаях одинаковый. Например, функции Int (8.9) и Fix (8.9) возвращают значение 8, Различие между функциями проявляется в случае отрицательного аргумента. Функция Int возвращает первое отрицательное целое число, меньшее или равное значению аргумента, в то время, как функция Fix возвращает первое отрицательное целое число, большее или равное значению аргумента. Например, Int пре­образует -8.4 в значение -9, a Fix преобразует -8.4 в значение -8.

Log (число)

Возвращает натуральный логарифм для числа, указанного в каче­стве аргумента функции. Натуральный логарифм есть логарифм по основанию е. Константа е приближенно равна 2,718282.

Oct (число)

Возвращает восьмеричный формат числа, указанного в качестве аргумента функции.

Rnd

Возвращает случайное число в диапазоне от 0 до 1.

Sgn (число)

Возвращает знак числа, указанного в качестве аргумента функции. Результат равен 0, если аргументом является число 0, равен 1 в слу­чае положительного значения аргумента и равен -1 в случае отрица­тельного значения аргумента.

Sin (число)

Возвращает значение синуса для числа, указанного в качестве ар­гумента функции. Результат находится в диапазоне от -1 до 1.

Sqr (число)

Возвращает значение корня квадратного из числа, указанного в качестве аргумента функции. Значение аргумента должно быть больше или равно 0.

Tan (число)

Возвращает значение тангенса для числа, указанного в качестве аргумента функции.

ПРИЛОЖЕНИЕ F

ОСНОВНЫЕ ФУНКЦИИ ОБРАБОТКИ СТРОК

Asc Код первого символа в строке

Chr Выдает символ по коду

CStr Преобразование числа в строку

InStr Возвращает позицию первого вхождения подстроки

LCase Преобразование всех символов строки в строчные

Left Выделяет символы с левой стороны строки

Len Длина строки

Ltrim/Rtrim/Trim Удаляет пробелы в строке

Mid Выделяет из строки подстроку

Right Выделяет символы с правой стороны строки

UCase Преобразование всех символов строки в прописные

Val Преобразует строку в число

Описание функций обработки строк:

Asc (строка)

Возвращает числовой код первого символа строки. Например, обе функции Asc («А») и Asc («Apple») возвращают число 65.

Chr (число)

Возвращает символ, соответствующий числовому коду, указанному в качестве аргумента. Например, Chr (65) возвращает символ «А».

CStr (число)

Преобразует число, указанное в качестве аргумента, в строку. На­пример, CStr (-459.65) возвращает «-459.65».

InStr (начало, строка!, строка2)

Возвращает позицию первого вхождения подстроки (аргумент «строка2») в исходную строку (аргумент «строка1»). Аргумент «нача­ло» задает начальную позицию для поиска. Пример:

Dim SearchString, Posl, Pos2

SearchString = «XXpXXpXXPXXP»

Posl = InStr (1, SearchString, «P»)

Pos2 = InStr (1, SearchString, «W»)

В данном примере переменная Posl принимает значение 9 (позиция первого вхождения символа «Р» в исходную строку), пе­ременная Pos2 принимает значение 0 (исходная строка не содержит символ «W»).

LCase (строка)

Преобразует все символы строки в строчные. Пример:

Dim SearchString, ResultString

SearchString = «Hello World»

ResultString = LCase (SearchString)

В данном примере переменная ResultString принимает значение «hello world».

Left (строка, число)

Возвращает подстроку, выбранную из исходной строки, начиная с первого символа слева. Аргумент «число» задает количество выби­раемых символов. Пример:

Dim SearchString, ResultString

SearchString = «Hello World»

ResultString = Left (SearchString, 5)

В данном примере переменная ResultString принимает значение «Hello».

Len (строка)

Возвращает длину строки. Пример:

Dim SearchString, Result

SearchString = «Hello World»

Result = Len (SearchString)

В данном примере переменная Result принимает значение 11.

Ltrim (строка)

Rtrim (строка)

Trim (строка)

Функция Ltrim удаляет начальные пробелы в строке, Rtrim удаля­ет завершающие пробелы в строке, Trim удаляет и начальные, и за­вершающие пробелы.

Mid (строка, начало, [длина])

Возвращает подстроку, выбранную из строки, начиная с позиции, заданной аргументом «начало». Аргумент «длина» (является необязательным параметром) задает количество выбираемых символов. Если аргумент «длина» не задан, то происходит выбор всех символов, на­чиная с заданной позиции, до конца строки. Пример:

Dim SearchString, Result 1, Result2

SearchString = «Пушкин Александр Сергеевич»

Resultl = Mid (SearchString, 8, 9)

Result2 = Mid (SearchString, 8)

В данном примере переменная Resultl принимает значение «Александр», переменная Result2 принимает значение «Александр Сергеевич».

Right (строка, число)

Возвращает подстроку, выбранную из исходной строки, начиная с первого символа справа. Аргумент «число» задает количество выбираемых символов. Пример:

Dim SearchString, ResultString

SearchString = «Hello World»

ResultString = Right (SearchString, 5)

В данном примере переменная ResultString принимает значение «World».

UCase (строка)

Преобразует все символы строки в прописные. Пример:

Dim SearchString, ResultString

SearchString = «hello world»

ResultString = UCase (SearchString)

В данном примере переменная ResultString принимает значение «HELLO WORLD».

Val (строка)

Преобразует строку в число. Например, функция Val («2457») возвращает значение 2457, Val («2 45 7») возвращает значение 2457, Val («24 и 57») возвращает значение 24.

Динамическое создание стандартного программного модуля из кода VBA Excel. Запись в стандартный модуль текста процедур. Программное удаление модуля.

Создание стандартного модуля

Стандартный программный модуль создается как новый элемент коллекции VBComponents проекта VBA:

Dim myModule As Object

Set myModule = ThisWorkbook.VBProject.VBComponents.Add(1)

Число (1) означает, что создается стандартный модуль, если заменить его на (3), будет создана форма.

Запись текста процедуры в модуль

Текст процедуры

Следующая процедура записывает в первые две ячейки первой строки рабочего листа Excel два числа, перемножает их и результат записывает в третью ячейку первой строки, а также окрашивает задействованные три ячейки в разные цвета:

Private Sub MyNewSub()

    Cells(1, 1) = 15

    Cells(1, 1).Interior.Color = vbYellow

    Cells(1, 2) = 25

    Cells(1, 2).Interior.Color = vbGreen

    Cells(1, 3) = Cells(1, 1) * Cells(1, 2)

    Cells(1, 3).Interior.Color = vbCyan

End Sub

Программная запись текста процедуры в модуль может быть осуществлена с помощью метода CodeModule.AddFromString или метода CodeModule.InsertLines.

Метод CodeModule.AddFromString

Метод CodeModule.AddFromString всегда записывает текст процедуры сразу после раздела Declarations и других строк, не относящихся к процедурам (например, комментарии). То есть, если в модуле уже есть процедуры, новая будет записана перед самой первой из них.

Пример кода VBA Excel, записывающего текст процедуры в программно созданный стандартный модуль «myModule» методом CodeModule.AddFromString:

myModule.CodeModule.AddFromString («Private Sub MyNewSub()» & vbNewLine & _

»    Cells(1, 1) = 15″ & vbNewLine & _

»    Cells(1, 1).Interior.Color = vbYellow» & vbNewLine & _

»    Cells(1, 2) = 25″ & vbNewLine & _

»    Cells(1, 2).Interior.Color = vbGreen» & vbNewLine & _

»    Cells(1, 3) = Cells(1, 1) * Cells(1, 2)» & vbNewLine & _

»    Cells(1, 3).Interior.Color = vbCyan» & vbNewLine & _

«End Sub»)

Метод CodeModule.InsertLines

Метод CodeModule.InsertLines предназначен для построчной записи текста процедуры. Обычно этот метод используется для добавления строк в конце модуля. Перед вставкой новых строк можно определить с помощью свойства CodeModule.CountOfLines количество уже имеющихся строк и начать вставку следующих.

Пример кода VBA Excel, записывающего текст процедуры в программно созданный стандартный модуль «myModule» методом CodeModule.InsertLines:

Dim n As Integer

With myModule.CodeModule

    n = .CountOfLines

    .InsertLines n + 1, «Private Sub MyNewSub()»

    .InsertLines n + 2, »    Cells(1, 1) = 15″

    .InsertLines n + 3, »    Cells(1, 1).Interior.Color = vbYellow»

    .InsertLines n + 4, »    Cells(1, 2) = 25″

    .InsertLines n + 5, »    Cells(1, 2).Interior.Color = vbGreen»

    .InsertLines n + 6, »    Cells(1, 3) = Cells(1, 1) * Cells(1, 2)»

    .InsertLines n + 7, »    Cells(1, 3).Interior.Color = vbCyan»

    .InsertLines n + 12, «End Sub»

End With

Код с методом InsertLines выглядит несколько аккуратней из-за отсутствия амперсандов и ключевых слов переноса строки (vbNewLine), чем код с методом AddFromString.

Вставка кнопки на рабочий лист

Чтобы продемонстрировать работоспособность процедуры «MyNewSub», записанной в динамически созданный стандартный модуль, нам понадобится кнопка на рабочем листе, которую мы свяжем с этой процедурой.

Программная вставка кнопки из коллекции «Элементы управления формы» на активный рабочий лист Excel:

Dim myButton As Shape

Set myButton = ActiveSheet.Shapes.AddFormControl(xlButtonControl, 100, 100, 100, 20)

‘Числа 100, 100, 100, 20 – это значения параметров кнопки Left, Top, Width, Height

‘Выбираем кнопку методом Select, чтобы она перешла в режим редактирования

myButton.Select

With Selection

    ‘Меняем надпись на кнопке

    .Characters.Text = «Новая кнопка»

    ‘Назначаем кнопке процедуру MyNewSub

    .OnAction = myModule.Name & «.MyNewSub»

End With

Пример кода в сборе

Динамическое создание стандартного модуля, программная запись в него процедуры «MyNewSub», вставка на рабочий лист кнопки из коллекции «Элементы управления формы» и назначение ей процедуры «MyNewSub»:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

Sub Primer()

‘Создаем стандартный модуль в текущей книге, как новый экземпляр коллекции «VBComponents»

Dim myModule As Object

Set myModule = ThisWorkbook.VBProject.VBComponents.Add(1)

‘Записываем текст процедуры «MyNewSub» в программно созданный модуль «myModule»

Dim n As Integer

With myModule.CodeModule

    n = .CountOfLines

    .InsertLines n + 1, «Private Sub MyNewSub()»

    .InsertLines n + 2, »    Cells(1, 1) = 15″

    .InsertLines n + 3, »    Cells(1, 1).Interior.Color = vbYellow»

    .InsertLines n + 4, »    Cells(1, 2) = 25″

    .InsertLines n + 5, »    Cells(1, 2).Interior.Color = vbGreen»

    .InsertLines n + 6, »    Cells(1, 3) = Cells(1, 1) * Cells(1, 2)»

    .InsertLines n + 7, »    Cells(1, 3).Interior.Color = vbCyan»

    .InsertLines n + 12, «End Sub»

End With

‘Вставляем на активный рабочий лист кнопку из коллекции «Элементы управления формы»

Dim myButton As Shape

Set myButton = ActiveSheet.Shapes.AddFormControl(xlButtonControl, 100, 100, 100, 20)

‘Меняем надпись на кнопке и назначаем ей процедуру «MyNewSub»

myButton.Select

With Selection

    .Characters.Text = «Новая кнопка»

    .OnAction = myModule.Name & «.MyNewSub»

End With

End Sub

Вы можете скопировать процедуру «Primer» в стандартный модуль вашего проекта VBA, запустить ее и ознакомиться с результатами ее работы. Код записан и протестирован в Excel 2016.

Удаление стандартного модуля

Программное удаление стандартного модуля с именем «Module4» из проекта VBA Excel:

Sub RemoveModule()

    With ThisWorkbook.VBProject

        .VBComponents.Remove .VBComponents(«Module4»)

    End With

End Sub

При удалении стандартного модуля вручную, VBA Excel перед удалением запрашивает об экспорте модуля на диск. Программным способом модуль удаляется без запроса.


Введение

Всем нам приходится — кому реже, кому чаще — повторять одни и те же действия и операции в Excel. Любая офисная работа предполагает некую «рутинную составляющую» — одни и те же еженедельные отчеты, одни и те же действия по обработке поступивших данных, заполнение однообразных таблиц или бланков и т.д. Использование макросов и пользовательских функций позволяет автоматизировать эти операции, перекладывая монотонную однообразную работу на плечи Excel. Другим поводом для использования макросов в вашей работе может стать необходимость добавить в Microsoft Excel недостающие, но нужные вам функции. Например функцию сборки данных с разных листов на один итоговый лист, разнесения данных обратно, вывод суммы прописью и т.д.

Макрос — это запрограммированная последовательность действий (программа, процедура), записанная на языке программирования Visual Basic for Applications (VBA). Мы можем запускать макрос сколько угодно раз, заставляя Excel выполнять последовательность любых  нужных нам действий, которые нам не хочется выполнять вручную.

В принципе, существует великое множество языков программирования (Pascal, Fortran, C++, C#, Java, ASP, PHP…), но для всех программ пакета Microsoft Office стандартом является именно встроенный язык VBA. Команды этого языка понимает любое офисное приложение, будь то Excel, Word, Outlook или Access.

Способ 1. Создание макросов в редакторе Visual Basic

Для ввода команд и формирования программы, т.е. создания макроса необходимо открыть специальное окно — редактор программ на VBA, встроенный в Microsoft Excel.

  • В старых версиях (Excel 2003 и старше) для этого идем в меню Сервис — Макрос — Редактор Visual Basic (Toos — Macro — Visual Basic Editor).
  • В новых версиях (Excel 2007 и новее) для этого нужно сначала отобразить вкладку Разработчик (Developer). Выбираем Файл — Параметры — Настройка ленты (File — Options — Customize Ribbon) и включаем в правой части окна флажок Разработчик (Developer). Теперь на появившейся вкладке нам будут доступны основные инструменты для работы с макросами, в том числе и нужная нам кнопка Редактор Visual Basic (Visual Basic Editor)



    macro1.png:

К сожалению, интерфейс редактора VBA и файлы справки не переводятся компанией  Microsoft на русский язык, поэтому с английскими командами в меню и окнах придется смириться:

macro2.png

Макросы (т.е. наборы команд на языке VBA) хранятся в программных модулях. В любой книге Excel мы можем создать любое количество программных модулей и разместить там наши макросы. Один модуль может содержать любое количество макросов. Доступ ко всем модулям осуществляется с помощью окна Project Explorer в левом верхнем углу редактора (если его не видно, нажмите CTRL+R). Программные модули бывают нескольких типов для разных ситуаций:

  • Обычные модули — используются в большинстве случаев, когда речь идет о макросах. Для создания такого модуля выберите в меню Insert — Module. В появившееся окно нового пустого модуля можно вводить команды на VBA, набирая их с клавиатуры или копируя их из другого модуля, с этого сайта или еще откуда нибудь:

    macro3.png

  • Модуль Эта книга — также виден в левом верхнем углу редактора Visual Basic в окне, которое называется Project Explorer. В этот модуль обычно записываются макросы, которые должны выполнятся при наступлении каких-либо событий в книге (открытие или сохранение книги, печать файла и т.п.):

    macro4.png

  • Модуль листа — доступен через Project Explorer и через контекстное меню листа, т.е. правой кнопкой мыши по ярлычку листа — команда Исходный текст (View Source). Сюда записывают макросы, которые должны выполняться при наступлении определенных событий на листе (изменение данных в ячейках, пересчет листа, копирование или удаление листа и т.д.)

    macro5.png

 Обычный макрос, введенный в стандартный модуль выглядит примерно так:

macro6.png

Давайте разберем приведенный выше в качестве примера макрос Zamena:

  • Любой макрос должен начинаться с оператора Sub, за которым идет имя макроса и список аргументов (входных значений) в скобках. Если аргументов нет, то скобки надо оставить пустыми.
  • Любой макрос должен заканчиваться оператором End Sub.
  • Все, что находится между Sub и End Sub — тело макроса, т.е. команды, которые будут выполняться при запуске макроса. В данном случае макрос выделяет ячейку заливает выделенных диапазон (Selection) желтым цветом (код = 6) и затем проходит в цикле по всем ячейкам, заменяя формулы на значения. В конце выводится окно сообщения (MsgBox).

С ходу ясно, что вот так сразу, без предварительной подготовки и опыта в программировании вообще и на VBA в частности, сложновато будет сообразить какие именно команды и как надо вводить, чтобы макрос автоматически выполнял все действия, которые, например, Вы делаете для создания еженедельного отчета для руководства компании. Поэтому мы переходим ко второму способу создания макросов, а именно…

Способ 2. Запись макросов макрорекордером

Макрорекордер — это небольшая программа, встроенная в Excel, которая переводит любое действие пользователя на язык программирования VBA и записывает получившуюся команду в программный модуль. Если мы включим макрорекордер на запись, а затем начнем создавать свой еженедельный отчет, то макрорекордер начнет записывать команды вслед за каждым нашим действием и, в итоге, мы получим макрос создающий отчет как если бы он был написан программистом. Такой способ создания макросов не требует знаний пользователя о программировании и VBA и позволяет пользоваться макросами как неким аналогом видеозаписи: включил запись, выполнил операци, перемотал пленку и запустил выполнение тех же действий еще раз. Естественно у такого способа есть свои плюсы и минусы:

  • Макрорекордер записывает только те действия, которые выполняются в пределах окна Microsoft Excel. Как только вы закрываете Excel или переключаетесь в другую программу — запись останавливается.
  • Макрорекордер может записать только те действия, для которых есть команды меню или кнопки в Excel. Программист же может написать макрос, который делает то, что Excel никогда не умел (сортировку по цвету, например или что-то подобное).
  • Если во время записи макроса макрорекордером вы ошиблись — ошибка будет записана. Однако смело можете давить на кнопку отмены последнего действия (Undo) — во время записи макроса макрорекордером она не просто возрвращает Вас в предыдущее состояние, но и стирает последнюю записанную команду на VBA.

Чтобы включить запись необходимо:

  • в Excel 2003 и старше — выбрать в меню Сервис — Макрос — Начать запись (Tools — Macro — Record New Macro)
  • в Excel 2007 и новее — нажать кнопку Запись макроса (Record macro) на вкладке Разработчик (Developer)

Затем необходимо настроить параметры записываемого макроса в окне Запись макроса:

macro7.png

  • Имя макроса — подойдет любое имя на русском или английском языке. Имя должно начинаться с буквы и не содержать пробелов и знаков препинания.
  • Сочетание клавиш — будет потом использоваться для быстрого запуска макроса. Если забудете сочетание или вообще его не введете, то макрос можно будет запустить через меню Сервис — Макрос — Макросы — Выполнить (Tools — Macro — Macros — Run) или с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или нажав ALT+F8.
  • Сохранить в… — здесь задается место, куда будет сохранен текст макроса, т.е. набор команд на VBA из которых и состоит макрос.:
    • Эта книга — макрос сохраняется в модуль текущей книги и, как следствие, будет выполнятся только пока эта книга открыта в Excel
    • Новая книга — макрос сохраняется в шаблон, на основе которого создается любая новая пустая книга в Excel, т.е. макрос будет содержаться во всех новых книгах, создаваемых на данном компьютере начиная с текущего момента
    • Личная книга макросов — это специальная книга Excel  с именем Personal.xls, которая используется как хранилище макросов. Все макросы из Personal.xls загружаются в память при старте Excel и могут быть запущены в любой момент и в любой книге.

После включения записи и выполнения действий, которые необходимо записать, запись можно остановить командой Остановить запись (Stop Recording).

Запуск и редактирование макросов

Управление всеми доступными макросами производится в окне, которое можно открыть с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или — в старых версиях Excel — через меню Сервис — Макрос — Макросы (Tools — Macro — Macros):

macro8.png

  • Любой выделенный в списке макрос можно запустить кнопкой Выполнить (Run).
  • Кнопка Параметры (Options) позволяет посмотреть и отредактировать сочетание клавиш для быстрого запуска макроса.
  • Кнопка Изменить (Edit) открывает редактор Visual Basic (см. выше) и позволяет просмотреть и отредактировать текст макроса на VBA.

Создание кнопки для запуска макросов

Чтобы не запоминать сочетание клавиш для запуска макроса, лучше создать кнопку и назначить ей нужный макрос. Кнопка может быть нескольких типов:

Кнопка на панели инструментов в Excel 2003 и старше

Откройте меню Сервис — Настройка (Tools — Customize) и перейдите на вкладку Команды (Commands). В категории Макросы легко найти веселый желтый «колобок» — Настраиваемую кнопку (Custom button):

macro9.gif

Перетащите ее к себе на панель инструментов и затем щелкните по ней правой кнопкой мыши. В контекстом меню можно назначить кнопке макрос, выбрать другой значок и имя:

macro10.gif

Кнопка на панели быстрого доступа в Excel 2007 и новее

Щелкните правой кнопкой мыши по панели быстрого доступа в левом верхнем углу окна Excel и выберите команду Настройка панели быстрого доступа (Customise Quick Access Toolbar):

macro11.png

Затем в открывшемся окне выберите категорию Макросы и при помощи кнопки Добавить (Add) перенесите выбранный макрос в правую половину окна, т.е. на панель быстрого доступа:

macro12.png

Кнопка на листе

Этот способ подходит для любой версии Excel. Мы добавим кнопку запуска макроса прямо на рабочий лист, как графический объект. Для этого:

  • В Excel 2003 и старше — откройте панель инструментов Формы через меню Вид — Панели инструментов — Формы (View — Toolbars — Forms)
  • В Excel 2007 и новее — откройте выпадающий список Вставить (Insert) на вкладке Разработчик (Developer) 

Выберите объект Кнопка (Button):

macro13.png

Затем нарисуйте кнопку на листе, удерживая левую кнопку мыши. Автоматически появится окно, где нужно выбрать макрос, который должен запускаться при щелчке по нарисованной кнопке.

Создание пользовательских функций на VBA

Создание пользовательских функций или, как их иногда еще называют, UDF-функций (User Defined Functions) принципиально не отличается от создания макроса в обычном программном модуле. Разница только в том, что макрос выполняет последовательность действий с объектами книги (ячейками, формулами и значениями, листами, диаграммами и т.д.), а пользовательская функция — только с теми значениями, которые мы передадим ей как аргументы (исходные данные для расчета).

Чтобы создать пользовательскую функцию для расчета, например, налога на добавленную стоимость (НДС) откроем редактор VBA, добавим новый модуль через меню Insert — Module и введем туда текст нашей функции:

macro14.png

Обратите внимание, что в отличие от макросов функции имеют заголовок Function вместо Sub и непустой список аргументов (в нашем случае это Summa). После ввода кода наша функция становится доступна в обычном окне Мастера функций (Вставка — Функция) в категории Определенные пользователем (User Defined):

macro15.png

После выбора функции выделяем ячейки с аргументами (с суммой, для которой надо посчитать НДС) как в случае с обычной функцией:

macro16.png

Содержание

  1. Что такое макрос?
  2. Запись макроса в Excel
  3. Первая программа на VBA Excel
  4. Запуск редактора Visual Basic
  5. Альтернативный вариант открытия файла
  6. Создание «умной» таблицы
  7. Стиль «умной» таблицы
  8. Добавление строки итогов
  9. Отображение вкладки “Разработчик” в ленте меню
  10. Знакомство с редактором VBA
  11. Создание сводных таблиц макросом
  12. Примеры макросов для автоматизации работы
  13. Окна редактора Visual Basic

Что такое макрос?

Для начала немного о терминологии.

Макрос – это код, написанный на встроенном в Excel языке VBA (Visual Basic for Application). Макросы могут создаваться как вручную, так и записываться автоматически с помощью так называемого макрорекодера.

Макрорекодер – это инструмент в Excel, который пошагово записывает все что вы выполняете в Excel и преобразует это в код на языке VBA. Макрорекодер создает очень подробный код (как мы увидим позже), который вы сможете при необходимости отредактировать в дальнейшем.

Записанный макрос можно будет запускать неограниченное количество раз и Excel повторит все записанные шаги. Это означает, что даже если вы ничего не знаете о VBA, вы можете автоматизировать некоторые задачи, просто записав свои шаги и затем повторно использовать их позже.

Теперь давайте погрузимся и посмотрим, как записать макрос в Excel.

Теперь давайте запишем очень простой макрос, который выбирает ячейку и вводит в нее текст, например “Excel”.

Вот шаги для записи такого макроса:

  1. Перейдите на вкладку “Разработчик”.
  2. В группе “Код” нажмите кнопку “Запись макроса”. Откроется одноименное диалоговое окно.
  3. В диалоговом окне “Запись макроса” введите имя для своего макроса, например “ВводТекста”. Есть несколько условий именования, которые необходимо соблюдать при назначении макроса. Например, вы не можете использовать пробелы между ними. Обычно я предпочитаю сохранять имена макросов как одно слово, с разными частями с заглавным первым алфавитом. Вы также можете использовать подчеркивание для разделения двух слов – например, “Ввод_текста”.
  4. Если вы хотите, то можете задать сочетание клавиш. В этом случае мы будем использовать ярлык Ctrl + Shift + N. Помните, что сочетание, которое вы указываете, будет отменять любые существующие горячие клавиши в вашей книге. Например, если вы назначили сочетание Ctrl + S, вы не сможете использовать это для сохранения рабочей книги (вместо этого, каждый раз, когда вы его используете, он выполняет макрос).
  5. В поле “Сохранить в” убедитесь, что выбрана опция “Эта книга”. Этот шаг гарантирует, что макрос является частью рабочей книги. Он будет там, когда вы сохраните его и снова откроете, или даже если вы поделитесь файлом с кем-то.
  6. Введите описание при необходимости. Обычно я этого не делаю, но если у вас много макросов, лучше указать, чтобы в будущем не забыть что делает макрос.
  7. Нажмите “ОК”. Как только вы нажмете OK, Excel начнет записывать ваши действия. Вы можете увидеть кнопку “Остановить запись” на вкладке “Разработчик”, которая указывает, что выполняется запить макроса.
  8. Выберите ячейку A2.
  9. Введите текст “Excel” (или вы можете использовать свое имя).
  10. Нажмите клавишу Enter. Вы попадете на ячейку A3.
  11. Нажмите кнопку “Остановить запись” на вкладке “Разработчик”.

Поздравляем! Вы только что записали свой первый макрос в Excel. Хотя макрос не делает ничего полезного, но он поможет нам понять как работает макрорекордер в Excel.

Теперь давайте рассмотрим код который записал макрорекодер. Выполните следующие действия, чтобы открыть редактор кода:

  1. Удалите текст в ячейке A2. Это нужно, чтобы проверить будет ли макрос вставлять текст в ячейку A2 или нет.
  2. Выберите любую ячейку – кроме A2. Это нужно проверить, выбирает ли макрос ячейку A2 или нет.
  3. Перейдите на вкладку “Разработчик”.
  4. В группе “Код” нажмите кнопку “Макросы”.
  5. В диалоговом окне “Макрос” щелкните макрос “ВводТекста”.
  6. Нажмите кнопку “Выполнить”.

Вы увидите, что как только вы нажмете кнопку “Выполнить”, текст “Excel” будет вставлен в ячейку A2 и выбрана ячейка A3. Это происходит за миллисекунды. Но на самом деле макрос последовательно выполнил записанные действия.

Примечание. Вы также можете запустить макрос с помощью сочетания клавиш Ctrl + Shift + N (удерживайте клавиши Ctrl и Shift, а затем нажмите клавишу N). Это тот же самый ярлык, который мы назначили макросу при его записи.

Первая программа на VBA Excel

Добавляем на стандартный модуль шаблон процедуры – строки ее начала и завершения, между которыми мы и будем писать свою первую программу (процедуру, подпрограмму).

  1. Откройте стандартный модуль двойным кликом по его ссылке в проводнике. Поместите в него курсор и нажмите кнопку «Procedure…» во вкладке «Insert» главного меню. Та же ссылка будет доступна при нажатии на вторую кнопку после значка Excel на панели инструментов.

В результате откроется окно добавления шаблона процедуры (Sub).

  1. Наберите в поле «Name» имя процедуры: «Primer1», или скопируйте его отсюда и вставьте в поле «Name». Нажмите кнопку «OK», чтобы добавить в модуль первую и последнюю строки процедуры.

Имя процедуры может быть написано как на латинице, так и на кириллице, может содержать цифры и знак подчеркивания. Оно обязательно должно начинаться с буквы и не содержать пробелы, вместо которых следует использовать знак подчеркивания.

  1. Вставьте внутрь шаблона процедуры следующую строку: MsgBox "Привет".

Функция MsgBox выводит информационное сообщение с указанным текстом. В нашем примере – это «Привет».

  1. Проверьте, что курсор находится внутри процедуры, и запустите ее, нажав клавишу «F5». А также, запустить процедуру на выполнение можно, нажав на треугольник (на изображении под пунктом меню «Debug») или на кнопку «Run Sub/UserForm» во вкладке «Run» главного меню редактора VBA Excel.


Если вы увидели такое сообщение, как на изображении, то, поздравляю – вы написали свою первую программу!

Запуск редактора Visual Basic

Простейший способ запустить редактор Visual Basic в Excel – нажать комбинацию клавиш Alt+F11 (то есть нажать клавишу Alt и, удерживая её, нажать клавишу F11). После этого откроется окно редактора Visual Basic, как показано на картинке ниже. Имейте ввиду, что окно Excel остается открытым и находится позади окна редактора.

Альтернативный вариант открытия файла

 Set objExcel = New Excel.Application Set wb = objExcel.Workbooks wb.Open fname, local:=True Set ws = wb.Item(1).ActiveSheet 

При открытии файла можно использовать доп.параметры (приведу некоторые):

UpdateLinks – обновлять или нет внешние ссылки при открытии файла;
ReadOnly – открытие в режиме только для чтения;
Format – используемый при открытии разделитель (1 – символ tab, 2 – запятые, 3 – пробелы, 4 – точка с запятой, 5 – без разделителя, 6 – пользовательский разделитель, заданный в Delimiter);
Delimiter – пользовательский разделитель (в случае, если Format = 6);
Origin – тип операционной системы (xlMacintosh, xlWindows или xlMSDOS);
Local – использование в Excel языка такого же, как в открываемом файле.

Теперь можно выполнять какие-то действия с открытым файлом, просто обращаясь через wb и ws.

 ws.Cells(1, 1).Value = "Test" ws.Cells(1, 1).Font.Size = 18 ' Поменять размер шрифта ws.Cells(1, 1).HorizontalAlignment = xlCenter ' 

Создание «умной» таблицы

Создается «умная» таблица Excel с помощью следующего кода:

ActiveSheet.ListObjects.Add(xlSrcRange, Range(“$A$1:$L$15”), , xlNo).Name _

= “МояТаблица1”

В данном примере:

ActiveSheet – лист, на котором создается таблица, может быть любой лист рабочей книги Excel.

Range(“$A$1:$L$15”) – диапазон, который преобразуется в таблицу. Можно использовать и такую форму: Range(Cells(1, 1), Cells(15, 12)), где индексы строк и столбцов можно заменить переменными.

xlNo – указывает, что первая строка выбранного диапазона не содержит заголовки столбцов (граф) будущей таблицы, и их необходимо добавить. В этом случае будет добавлена дополнительная строка с наименованиями столбцов по умолчанию: Столбец1, Столбец2, Столбец3 и т.д., которые в дальнейшем можно переименовать (количество строк в таблице, включая строку заголовков, получится на одну больше, чем в указанном диапазоне). Если в диапазоне уже содержатся заголовки столбцов будущей таблицы, то следует указать вместо xlNo значение xlYes. В этом случае первая строка указанного диапазона будет преобразована в строку заголовков, а если она будет не заполнена, то добавятся названия столбцов по умолчанию: Столбец1, Столбец2, Столбец3 и т.д. (количество строк в таблице, включая строку заголовков, будет то же, что и в указанном диапазоне).

МояТаблица1 – имя, присваиваемое создаваемой таблице. Имя должно быть без пробелов: при указании в коде VBA названия таблицы с пробелами, во время его выполнения Excel заменит пробелы знаками подчеркивания (по крайней мере, так происходит в Excel 2016).

Таблица будет создана со стилем по умолчанию (TableStyleMedium2 в Excel 2016).

Стиль «умной» таблицы

Присвоение стиля таблице (изменение стиля) осуществляется с помощью свойства TableStyle объекта ListObjects:

ActiveSheet.ListObjects(“МояТаблица1”).TableStyle = “TableStyleMedium15”

Свойство TableStyle может принимать следующие значения:

  • TableStyleLight (светлый) с индексом от 1 до 21 (в Excel 2016);
  • TableStyleMedium (средний) с индексом от 1 до 28 (в Excel 2016);
  • TableStyleDark (темный) с индексом от 1 до 11 (в Excel 2016).

Например, TableStyleLight5, TableStyleMedium24, TableStyleDark8.

Чтобы отменить стиль таблицы в коде VBA, необходимо свойству TableStyle присвоить пустую строку:

ActiveSheet.ListObjects(“МояТаблица1”).TableStyle = “”

Этому коду соответствует выбор в разделе «Конструктор» на ленте инструментов Excel самого первого значка стилей в разделе «Светлый».

Добавление строки итогов

Строка итогов «умной» таблицы добавляется следующим образом:

ActiveSheet.ListObjects(“МояТаблица1”).ShowTotals = True

Удаляется строка итогов «умной» таблицы так:

ActiveSheet.ListObjects(“МояТаблица1”).ShowTotals = False

Отображение вкладки “Разработчик” в ленте меню

Перед тем как записывать макрос, нужно добавить на ленту меню Excel вкладку “Разработчик”. Для этого выполните следующие шаги:

  1. Щелкните правой кнопкой мыши по любой из существующих вкладок на ленте и нажмите «Настроить ленту». Он откроет диалоговое окно «Параметры Excel».
  2. В диалоговом окне «Параметры Excel» у вас будут параметры «Настроить ленту». Справа на панели «Основные вкладки» установите флажок «Разработчик».
  3. Нажмите «ОК».

В результате на ленте меню появится вкладка “Разработчик”

Знакомство с редактором VBA

  1. Создайте новую книгу Excel и сохраните ее как книгу с поддержкой макросов с расширением .xlsm. В старых версиях Excel по 2003 год – как обычную книгу с расширением .xls.
  2. Нажмите сочетание клавиш «левая_клавиша_Alt+F11», которое откроет редактор VBA. С правой клавишей Alt такой фокус не пройдет. Также, в редактор VBA можно перейти по ссылке «Visual Basic» из панели инструментов «Разработчик» на ленте быстрого доступа. Если вкладки «Разработчик» на ленте нет, ее следует добавить в настройках параметров Excel.

В левой части редактора VBA расположен проводник проекта, в котором отображены все открытые книги Excel. Верхней строки, как на изображении, у вас скорее всего не будет, так как это – личная книга макросов. Справа расположен модуль, в который записываются процедуры (подпрограммы) с кодом VBA. На изображении открыт модуль листа, мы же далее создадим стандартный программный модуль.

  1. Нажмите кнопку «Module» во вкладке «Insert» главного меню. То же подменю откроется при нажатии на вторую кнопку после значка Excel на панели инструментов.

После нажатия кнопки «Module» вы увидите ссылку на него, появившуюся в проводнике слева.

Создание сводных таблиц макросом

Источник информации для сводных таблиц всегда один и тот же – база данных. Набор данных образующих базу для обработки в Excel может быть не только на листах рабочей книги, а также и во внешних источниках.

Для описания способа создания сводных таблиц средствами процедур VBA будет использоваться таблица, которая содержит данные по месяцам о оборотах семи магазинов фирмы за последние несколько лет деятельности.

Тестовая база для примера состоит из сгруппированных данных в 21 строке. Благодаря использованию сводных таблиц можно в читабельный вид презентовать изменение данных и извлечь соответственные результаты анализа.

Список данных по каждому месяцу определенного года содержит информацию о размере оборотов в отдельных магазинах фирмы. В таблице включен режим автофильтра, чтобы упростить на сколько возможно предварительный визуальный анализ данных.

С помощью макроса VBA создадим из этого большого объема данных читабельный и удобный для визуального анализа отчет в виде сводной таблице. Нам нужна сводная таблица отчета, в котором без труда можно прочитать интересующую нас информацию без визуального анализа сотен строк в исходной базе данных.

В данном примере создание сводной таблицы VBA-макросом будет достаточно простым. Простота решения будет достигнута за счет симуляции использования подобных параметров и действий, которые предоставляет к распоряжению мастер сводных таблиц в Excel. Используя экземпляр объекта PivotCaches запишем настройки своей сводной таблицы присвоив ей определенное имя. Это позволит потом непосредственно ссылаться на сводную таблицу в любой части кода. Для создания сводной таблицы используя макрос будем использовать метод PivotTableWizard. На этом же шаге будем использовать возможности объекта PivotFields, в котором определим структуру сводной таблицы с учетом исходных данных источника.

Написание кода макросов в Excel всегда начинается с открытия VBA-редактора (ALT+F11): «РАЗРАБОТЧИК»-«Код»-«Visual Basic».

Затем создадим модуль где будет храниться исходный код. Для этого выберите инструмент в редакторе VBA: «Insert»-«Module». В появившемся окне модуля введите следующий VBA-код макроса:

SubCreateTableM()
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="Лист1!A1:D21").CreatePivotTable TableDestination:="", TableName:="ТаблицаМ"
WithActiveSheet
.Name ="Анализ"
.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
End With
WithActiveSheet.PivotTables("ТаблицаМ")
.SmallGrid =True
.PivotFields("Оборот").Orientation = xlDataField
.PivotFields("Год").Orientation = xlPageField
.PivotFields("Месяц").Orientation = xlRowField
.PivotFields("Магазины").Orientation = xlColumnField
End With
End Sub

Теперь достаточно лишь запустить макрос выбрав инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«CreateTableM»-«Выполнить»:

В результате будет автоматически сгенерированная сводная таблица с помощью макроса.

Примеры макросов для автоматизации работы

Как выделить повторяющиеся значения в Excel разными цветами?.
Пример удобного макроса для автоматической подсветки добирающихся значений ячеек разными цветами. Как выделить разным цветом дубликаты ячеек?

Макрос для поиска ближайшего значения заданному на всех листах книги Excel.
Готовое решение для поиска на всех листах рабочей книги как точного, так и максимально приближенного исходного значения. VBA код макрос для нахождения и получения числа с любого листа книги.

Макрос для слияния данных при серийной печати рассылок в Excel.
Альтернатива инструменту слияния в Word для печати рассылок прямо из Excel. Исходный код макроса, который выполняет слияние данных для серийной печати рассылок.

Макросы для фильтра сводной таблицы в Excel.
Как автоматизировать фильтр в сводных таблицах с помощью макроса? Исходные коды макросов для фильтрации и скрытия столбцов в сводной таблице.

Макрос позволяет рассчитать процент в сводной таблице Excel.
Как быстро преобразовать значения сводной таблицы на доли в процентном соотношении к общим итогам по строкам и по столбцам? Исходные коды макросов для работы с процентами.

Макрос для настройки полей и форматирования сводной таблицы.
Управление полями сводной таблицы с помощью макроса. Исходный код VBA-макроса для настройки и изменения структуры в сводных таблицах.

Макрос для создания сводной таблицы в Excel.
Как автоматически сгенерировать сводную таблицу с помощью макроса? Исходный код VBA для создания и настройки сводных таблиц на основе исходных данных.

Макросы для изменения формата ячеек в таблице Excel.
Как форматировать ячейки таблицы макросом? Изменение цвета шрифта, заливки и линий границ, выравнивание. Автоматическая настройка ширины столбцов и высоты строк по содержимому с помощью VBA-макроса.

VBA макрос для поиска скрытых строк и столбцов на листе Excel.
Поиск всех скрытых строк и столбцов на рабочем листе с помощью VBA-макроса. Исходные коды макросов для получения сводной информации о скрытых строках и столбцах рабочего листа.

Макрос для копирования и переименования листов Excel.
Как одновременно копировать и переименовывать большое количество листов одним кликом мышкой? Исходный код макроса, который умеет одновременно скопировать и переименовать любое количество листов.

Окна редактора Visual Basic

В процессе работы в редакторе Visual Basic в Excel могут быть открыты различные окна. Управление окнами осуществляется в меню View, которое находится в верхней части окна редактора VBA.

Источники

  • https://micro-solution.ru/excel/vba/first-macros
  • https://vremya-ne-zhdet.ru/vba-excel/nachinayem-programmirovat-s-nulya/
  • https://office-guru.ru/excel/redaktor-visual-basic-v-excel-451.html
  • https://codernotes.ru/articles/vba/rabota-s-excel-fajlom-iz-vba.html
  • https://vremya-ne-zhdet.ru/vba-excel/sozdaniye-tablitsy/
  • https://exceltable.com/vba-macros/makros-svodnoy-tablicy
  • https://exceltable.com/vba-macros/

Понравилась статья? Поделить с друзьями:
  • Создание программ для расчетов в excel
  • Создание программ в excel под заказ
  • Создание программ в excel 2016
  • Создание программ в excel 2007
  • Создание примечания в word 2010