FormulaCamp
Пройдено
13. VBA и макросы · Основы языка · 20 мин

2. VBA: переменные и типы данных

Урок 2 из 7
Задание 1 из 3
  1. В C2:C6 получите то, что макрос пишет строкой Int(m / 12): полные годы стажа.

Теория урока

Переменная — именованное место в памяти. Её объявляют словом Dim и указывают тип:

  • Long — целые числа примерно до ±2,1 млрд. Для номеров строк берите его, а не Integer (у Integer предел 32 767, дальше ошибка Overflow);
  • Double — дробные числа; Currency — деньги с 4 знаками после запятой без ошибок округления;
  • String — текст, Boolean — True/False, Date — дата и время;
  • Variant — «любой тип». Его получает переменная, у которой тип не указан;
  • объекты: Range, Worksheet, Workbook. Им значение присваивают через Set.

Строка Option Explicit в начале модуля запрещает необъявленные переменные. С ней опечатка в имени (totl вместо total) даст ошибку при компиляции, а не тихий неверный результат. Включите её навсегда: Tools → Options → Require Variable Declaration.

Начальные значения: числа — 0, строка — пустая "", Boolean — False. Операторы: / — обычное деление, \ — целочисленное, Mod — остаток, & — склейка текста.

Option Explicit

Sub Стаж()
    Dim r As Long, m As Long
    Dim ws As Worksheet
    Set ws = Worksheets("Лист1")
    For r = 2 To 6
        m = ws.Cells(r, 2).Value              ' стаж в месяцах из столбца B
        ws.Cells(r, 3).Value = Int(m / 12)    ' полных лет
        ws.Cells(r, 4).Value = m Mod 12       ' оставшихся месяцев
        ws.Cells(r, 5).Value = ws.Cells(r, 1).Value & ": " & Int(m / 12) & " г. " & (m Mod 12) & " мес."
    Next r
End Sub

Cells(строка, столбец) — ячейка по номерам: Cells(2, 3) — это C2. В заданиях получите формулами то же, что запишет этот макрос.

Тренажёр не выполняет макросы и скрипты. Код из урока запускайте в настольном Excel (VBA) или в Excel для Интернета (Office Scripts). Здесь вы учитесь читать код и проверяете себя формулами и тестом.

Проверьте себя

1. Код: Dim a, b As Long. Какой тип у переменной a?
2. Что произойдёт: Dim x As Integer, затем x = 40000?
3. Что напечатает Debug.Print 17 \ 5, 17 Mod 5 ?
4. В модуле есть Option Explicit и Dim total As Long. В коде по ошибке написано totl = totl + 1. Что будет?
5. Код: Dim ws As Worksheet, затем ws = Worksheets("Итог"). Какую ошибку исправить?
6. Dim s As String, Dim ok As Boolean — и сразу Debug.Print Len(s), ok. Что выведется?
fx

Enter — ввести · F2 — изменить · F4 — $ в ссылке · Ctrl+C/Ctrl+V — копировать · Ctrl+Z — отменить

Esc или F6 — выйти из таблицы к кнопке «Проверить» · Shift+Tab в первой ячейке — к началу страницы