VBA в Excel

VBA в Excel

Программирование в Excel с помощью VBA.

Язык VBA позволяет писать макросы в Excel. Как это делать рассматривается ниже.

Application

Application – это объект, занимающий вершину иерархии объектов в Excel. Application – это и есть Excel. Вот примеры использования Application:

окно нормальных размеров

Application.WindowState = xlNormal

окно максимальных размеров

Application.WindowState = xlMaximized

Workbooks

Workbooks – это коллекция рабочих книг, которые открыты. Каждая рабочая книга представлена объектом Workbook. Узнать сколько рабочих книг сейчас в коллекции можно так:

Dim bookCount As Integer
bookCount = Workbooks.Count
MsgBox ("Opened books = " & bookCount)

Обатиться к нужной рабочей книге в коллекции Workbooks можно обратиться по его номеру или по имени:

Workbooks.Item(2).Activate

здесь мы активизировали второй элемент коллекции Workbooks.

Другие примеры мы увидим ниже.

Наверх

Workbook

Workbook – это рабочая книга.

Сохранить рабочую книгу:

Workbooks.Item(1).Save

И где же в этом примере рабочая книга Workbook? Здесь: Workbooks.Item(1), это выражение возвращает первый элемент коллекции Workbooks, а это и есть Workbook.

Закрыть рабочую книгу:

Workbooks.Item(1).Close
Наверх

Sheets

Sheets – это все листы рабочей книги. Листы рабочей книги представлены двумя типами: рабочие листы – это обычные листы Excel и второй тип – это листы диаграмм. Те и другие и составляют коллекцию Sheets.

Charts

Charts – это только диаграммы рабочей книги.

Chart

Chart – это объект, представляющий одину диаграмму. Если диаграмма содержится в обычном рабочем листе, то она объектом Chart не является.

Worksheets

Worksheets – это только рабочие листы рабочей книги.

Добавим рабочий лист в коллекцию Worksheets:

Worksheets.Add

Worksheet

Worksheet – это один лист рабочей книги Excel.

Все ячейки рабочего листа Worksheet:

Worksheets("Лист1").Cells
Наверх

Range. Работа с ячейками в Excel

Range – это одна ячейка листа или несколько ячеек. Этот объект рассмотрим подробнее. Установим кнопку на рабочий лист Excel. Откройте панель инструментов «Элементы управления» (правой кнопкой по свободному полю панели инструментов и выбираем из выпавшего меню). В этой панели выбираем кнопку и устанавливаем её на свободное место рабочего листа, в его правой части. Правой кнопкой мыши по нашей кнопке - > Свойства. Установите значение свойства Name – CommandButton, а свойства Caption - Range Test.

Получаем: VBA Excel

Закройте окно свойств кнопки, и кликаем по нашей кнопке правой кнопкой мыши, из выпавшего меню выбираем «Исходный текст». Открывается окно редактора VBA, оно называется Microsoft Visual Basic. В нём уже есть заготовка обработчика нажатия на кнопку CommandButton:

Private Sub CommandButton_Click()

End Sub

Кстати, помотрите на эту заготовку, ключевое слово Sub говорит, что это процедура, а слово Private указывает, что эта процедура видна лишь в данном модуле.

Всё у нас готово для начала изучения работы с ячейками рабочего листа Excel.

Как задать активную ячейку?

Сделаем активной ячейку A2:A2:

Private Sub CommandButton_Click()
    Range("A2:A2").Activate
End Sub

Далее сохраняем, далее Debug - > Compile VBA Project. Если нет ошибок, то запускаем нашу программу: Run - > Run Sub/UserForm.

Получаем: VBA Excel

Выделим любую другую ячейу и нажимём на кнопку Range Test. Вновь выделится ячейка «А2». Это значит, что обработчик нажатия на кнопку работает исправно.

Наверх

Как выделить ряд ячеек?

Выделим интервал ячеек «A2:D2». Вносим в нашу заготовку макроса новый код:

Private Sub CommandButton_Click()
    Range("A2:D2").Select
End Sub

Далее сохраняем, далее Debug - > Compile VBA Project. Переходим на рабочий лист Excel и жмем на кнопку Range Test.

Получаем: VBA Excel

Как установить значение в ячейку?

Внесем число 123 в ячейку "A2:A2" для этого изменим код макроса так:

Private Sub CommandButton_Click()
    Range("A2:A2").Value = 123
End Sub

Далее сохраняем, далее Debug - > Compile VBA Project. Переходим на рабочий лист Excel и жмем на кнопку Range Test.

Получаем: VBA Excel

Это результат работы.