Найти тему
Doc

#1. Как начать программировать в программе Excel

Оглавление

Если вы читаете эту статью, то скорее всего вы слышали что в программу Microsoft Excel встроено приложение VBA, которое позволяет сильно расширить возможности пользователя Excel при использовании им электронных таблиц. Ну а если вы случайно оказались на этой страничке и ничего не слышали о языке программирования VBA, то у вас хорошая возможность узнать как это все работает. Возможности VBA очень большие. Если кратко, то этот язык программирования позволяет пользователю автоматизировать все действия, которые он выполняет, но в тысячи раз быстрее. Также VBA может выполнять эти задачи с помощью других программ Microsoft office! (Например быстро сравнить два диапазона и цветами выделить различия в них. По этой ссылке можете прочитать как это реализуется в VBA)

Заново устанавливать приложение VBA на ваш компьютер не нужно, если вы уже пользуетесь программами Microsoft Office. Редактор VBA устанавливается совместно с Microsoft Office.

Для чего нужен язык программирования VBA?

С помощью VBA можно:

  • автоматизировать большинство рутинных операций, которые приходится делать ежедневно по нескольку часов (например найти отличия в двух таблицах);
  • расширить функционал основных инструментов Excel (таких как сортировка, фильтр, сводных таблиц, анализ информации с помощью SQL запросов - по ссылке можно прочитать статью об этом);
  • подключаться из программы Excel к другим программам Microsoft Office (Word, Power Point, Access) и не только (AutoCad, CorelDraw и пр.) и в них использовать возможности Excel для работы с данными или даже рисования.

Это основные пункты того, куда можно приложить навыки программирования на VBA.

Что представляет собой программирование на VBA?

Все программы, в которые встроен редактор VBA, имеют объектную модель, с которой работает VBA.

Если рассказывать простым языком и воспользоваться для описания примером из жизни, то это как коробка с конструктором Лего

В каждой коробке лего множество объектов, которые имеют свои цвета, формы, количество и т.п. Также сама коробка имеет свои собственные свойства: наименование, объем и т.п.
В каждой коробке лего множество объектов, которые имеют свои цвета, формы, количество и т.п. Также сама коробка имеет свои собственные свойства: наименование, объем и т.п.

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

Давайте рассмотрим объектную модель Excel

Для того, чтобы начать программировать достаточно знать несколько объектов из которых состоит Excel.

Основные объекты это:

  • Application - непосредственно приложение Excel (по аналогии это коробка Lego);
  • Workbook - рабочая книга Excel (это например один из видов деталей Lego);
  • Worksheet - рабочий лист Excel (группа деталей, которая составляет вид деталей Lego);
  • Range - диапазон ячеек (или одна ячейка) рабочего листа Excel (это уже конкретные детали каждой группы деталей Lego).

Все объекты имеют свои свойства и методы.

Свойство - это какая либо характеристика объекта (например общие свойства, такие как Name - есть у всех объектов, некоторые свойства имеют только определенные объекты, свойство Color (цвет) могут иметь такие объекты как Range и Font и т.д.).

Методы - это действия, которые вы пожете делать с объектами. Это может быть переименование объекта (рабочей книги, рабочего листа, диапазона ячеек), изменение цвета, размера шрифта и т.д.

Давайте рассмотрим каждый из этих объектов и их свойства и методы

Для того чтобы войти в редактор VBA вам нужно нажать на комбинацию клавиш Alt+F11 или добавив на ленту приложения вкладку "Разработчик" нажать на кнопку Visual Basic

Кнопка "Visual Basic" на вкладке "Разработчик"
Кнопка "Visual Basic" на вкладке "Разработчик"

Чтобы на вашей ленте появилась вкладка "Разработчик" вам нужно выполнить следующие действия

Application - это так сказать корневой объект в приложении Excel.

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

Введите для примера этот код:

Sub Test_Application
MsgBox Application.Name
End Sub

После запуска кода у вас будет вот такой результат

Окно с названием запущенного приложения
Окно с названием запущенного приложения

Workbook - с этим объектом в основном и начинают работать. Давайте рассмотрим несколько его свойств и методов работы с ним.

Обращаться к рабочей книге можно следующим образом:

  1. Напрямую с помощью команды ThisWorkbook;
  2. Назначив переменную, которой будет присваиваться значение соответствующее рабочей книге.

Примеры:

Sub Test_Workbook()
MsgBox ThisWorkbook.Name
End Sub

Этот пример выводит на экран сообщение с названием рабочей книги.

-5

Аналогично имя книги можно получить следующим образом:

Sub Test_Workbook()
Dim wb As Workbook
Set wb = ThisWorkbook
MsgBox wb.Name
End Sub

Здесь мы выполнили следующие действия:

1. создали переменную Dim wb As Workbook

2. присвоили ей значение текущей рабочей книги: wb = ThisWorkbook

3. вывели в окно имя этой рабочей книги: MsgBox wb.Name

Объект Workbook относится к классу Workbooks. Используя этот класс, мы можем определить количество открытых рабочих книг и получить имя каждой рабочей книги. Это может пригодится в случае, когда вам необходимо выполнить например в одной книге получить какое либо значение и вставить это значение в другую книгу.

Примеры:

Sub Количество_открытых_рабочих_книг ()
MsgBox Workbooks.Count
End Sub

Sub ВсеИменаОткрытыхКниг()
Dim wb As Workbook
For Each wb In Workbooks
MsgBox wb.Name
Next
End Sub

Dim wb As Workbook
For Each wb In Workbooks

В этих двух строчках такой смысл:

в первой строке мы задаем переменную wb, которой будут присваиваться значения рабочих книг

во второй строке инициируется цикл, который можно перевести так:

For (Для) Each (Каждой) wb In (В) Workbooks (Классе "Рабочие книги")

с помощью которого последовательно перебираются все открытые файлы Excel и их имена выводятся в окно сообщения.

WorkSheet - объект "Рабочий лист"

У этого объекта как и у рабочей книги есть имя. Также как и с рабочей книгой, используя класс WorkSheets можно получить имена всех рабочих листов в рабочей книге и поочередно перейти к каждому листу.

Пример:

Sub ИмяЛиста()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Activate
MsgBox ws.Name
Next
End Sub

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

Range - объект ячейка (диапазон ячеек)

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

Вот несколько примеров работы с ячейками.

1. Получение адреса выделенной ячейки (диапазона ячеек)

Sub ПолучитьАдрес()
MsgBox Selection.Address
End Sub

2. Вставить в каждую ячейку выделенного диапазона значение 5

Sub ВставитьЗначение5()
Dim r As Range
Dim sel As Range
Set sel = Selection
For Each r In sel
r = 5
Next
End Sub

В этом примере также присутствует код "Цикла"

For Each r In sel
Next

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

В этой статье мы рассмотрели самые основные объекты приложения Excel и самые рассмотрели как получить некоторые свойства этих объектов, а также поменять содержимое объекта Range. Более подробно со свойствами и методами работы с объектной моделью приложения Excel мы будем рассматривать в других статьях канала.

В следующей статье мы рассмотрим следующий объект в иерархической структуре VBA Excel - рабочий лист

Если материал вам понравился, ставьте лайки и подписывайтесь на канал.

PS.

Некоторые аспекты применения объектов VBA в Excel вы можете посмотреть в этом видео, которое подготовлено мною

Наука
7 млн интересуются