После урока сможешь: обращаться из кода к книгам, листам, диапазонам и ячейкам Excel — читать и менять значения, добавлять листы, находить нужные ячейки.
Вспомни: «книга → лист → ячейка/диапазон» — та же иерархия, что в теме 1.2, только теперь к ней обращаются из кода, а не мышью.
Иерархия объектов: Workbook, Worksheet, Range, Cells
В VBA всё устроено как вложенные объекты: Workbook (книга) содержит Worksheet (листы), лист содержит Range/Cells (диапазоны и ячейки). У объектов есть свойства (что объект ХРАНИТ, например Range("A1").Value) и методы (что объект ДЕЛАЕТ, например Range("A1").Copy).
Работа с книгами (Workbook)
Методы: Save (сохранить), SaveAs (сохранить копию с новым именем), Close (закрыть). У самой книги (Workbook) НЕТ собственного свойства Visible — видимость управляется отдельно: Application.Visible = False скрывает окно всего Excel целиком (полезно для фоновой пакетной обработки), а Workbook.Windows(1).Visible = False скрывает окно конкретной книги.
Dim книга As Workbook Set книга = ActiveWorkbook книга.Save ' сохранить книгу как есть книга.SaveAs "C:\Отчёты\Копия.xlsx" ' сохранить копию под новым именем книга.Close ' закрыть книгу
Работа с листами (Worksheet)
Новый лист добавляют так: Sheets.Add. Удаляют: ActiveSheet.Delete. К листу обращаются по имени (Sheets("Отчёт")) или по номеру по порядку (Sheets(1)). Перебор всех листов книги: For Each sh In ThisWorkbook.Worksheets ... Next sh.
Диапазоны и ячейки (Range, Cells)
Диапазон задают именем (Range("A1:B10")) или через строку/столбец (Cells(row, column)). Читают/пишут значение через .Value: Range("A1").Value = 100. Агрегаты доступны через функции листа: Application.WorksheetFunction.Sum(Range("A1:A10")).
Метод .Find ищет ячейку с заданным значением внутри диапазона. Если совпадение не найдено, он возвращает Nothing — это обязательно проверять через If Not результат Is Nothing Then, иначе следующее же обращение к ячейке (например, .Address) упадёт с ошибкой.
Dim диапазон As Range, найдено As Range
Set диапазон = Range("A1:B10")
Set найдено = диапазон.Find(What:="Итого")
If Not найдено Is Nothing Then
MsgBox "Найдено в ячейке: " & найдено.Address ' например, B4
Else
MsgBox "Значение не найдено"
End If
Именованный диапазон создают так: ThisWorkbook.Names.Add "Курс", Range("B1") — дальше на него можно ссылаться по имени в формулах и коде.
Workbook (книга)
\-- Worksheet (лист) -- Sheets("Отчёт") или Sheets(1)
\-- Range/Cells (диапазон/ячейка) -- Range("A1:B10"), Cells(2,3)
Range("A1").Value = 100 <- записать значение
x = Range("A1").Value <- прочитать значение
Проверь себя
Контрольный вопрос. Как устроена иерархия объектов Excel в VBA?
Подсказка: Та же вложенность, что и в реальной книге: книга → листы → ячейки на листе.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Напиши строку кода сам. Нужно записать число 100 в ячейку A1 текущего листа, обратившись к ней по имени через Range. Впиши строку целиком.
Подсказка: Сначала объект-ячейка с адресом в кавычках, потом через точку свойство, которое хранит значение, потом знак равно и само число.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Какое из утверждений про видимость (Visible) в Excel VBA верно?
Подсказка: По официальной документации Microsoft существуют Application.Visible и Window.Visible, а отдельного Workbook.Visible — нет.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Напиши строку кода сам. Нужно прочитать значение ячейки, стоящей во 2-й строке и 3-м столбце, и положить его в переменную x. Обратись к ячейке через Cells (сначала строка, потом столбец). Впиши строку целиком.
Подсказка: Слева переменная и знак равно, справа — Cells с двумя числами в скобках (строка, столбец) и через точку свойство значения.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. For Each sh In ThisWorkbook.Worksheets … Next sh — что делает этот код?
Подсказка: For Each из темы 5.2 перебирает элементы коллекции — здесь коллекция листов.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Допиши пропущенное слово, чтобы код ниже присвоил переменной лист ссылку на первый лист книги (без этого слова присвоение ОБЪЕКТА вызовет ошибку). Впиши слово: Dim лист As Worksheet : ___ лист = Sheets(1)
Подсказка: Обычным переменным (числа, строки) значение присваивают через =, а ссылку на ОБЪЕКТ — только через специальное ключевое слово перед =.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Range(«A1»).Value = 10 : Range(«B1»).Value = Range(«A1»).Value * 2 : x = Range(«B1»).Value — чему равен x? Впиши число.
Подсказка: B1 читает значение из A1 и удваивает его.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Cells(2, 3) в VBA обращается к…
Подсказка: Cells(строка, столбец) — порядок аргументов именно такой.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Application.WorksheetFunction.Sum(Range(«A1:A10»)) в коде VBA делает то же самое, что в обычном Excel делает…
Подсказка: WorksheetFunction.Sum — это ровно та же функция СУММ, вызванная из кода.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Зачем нужен именованный диапазон (ThisWorkbook.Names.Add)?
Подсказка: Имя — это просто удобный ярлык для адреса ячейки/диапазона.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Дан код:
For i = 1 To 5<br> Cells(i, 1).Value = i * 10<br>Next i<br>Range("B1").Value = Application.WorksheetFunction.Sum(Range("A1:A5"))Какое значение окажется в ячейке B1? Впиши число.
Подсказка: Цикл кладёт в A1:A5 числа 10, 20, 30, 40, 50 — сложи их.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Отметь все верные утверждения про объекты Excel в VBA (не менее двух вариантов).
Выберите все верные варианты.
Подсказка: Два варианта приписывают объектам поведение, которого у них нет.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Итог
Итог. Workbook содержит Worksheet, Worksheet содержит Range/Cells — та же иерархия, что и вручную, только через код. Save/SaveAs/Close управляют книгой, Sheets.Add/Delete — листами, For Each перебирает коллекции. Range(«A1»).Value и Cells(row, column) читают/пишут значения; WorksheetFunction даёт доступ к формулам Excel из кода; именованные диапазоны — удобные ярлыки для адресов.
← Назад к главе 5 · ↑ В начало урока · ⌂ В начало курса · Вперёд: Автоматизация поиска и сортировки →
