Урок 4 по VBA — Переменные

Урок 4 по VBA — Переменные Макросы на VBA

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

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

Правила именования переменных

Правила, которые накладываются при задании имени переменной (идентификатор), как правило присущи и именам процедур, констант или функций:

  • Первый символ в имени должен быть латинской буквой
  • Нельзя использовать пробелы и символы пунктуации, кроме символа подчеркивания
  • Длина имени должна составлять не больше 255 знаков
  • Уникальность имени в текущей области видимости
  • Имя не должно быть зарезервированным словом, зарезервированные слова подсвечиваются в редакторе кода, например, в редакторе Notepad++.

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

  • Вначале имени прописывается префикс строчными буквами, который определяет, что именно хранит переменная:
  • str (или s) — будет хранить символьное значение, строку (тип String)
  • b — хранит логическое значение (тип Boolean)
  • d — дата;
  • obj (или o) — переменная хранит ссылку на объект
  • n — будет хранить числовое значение, от слова Number
  • fn (или f) — является функцией
  • c (или, если все символы являются заглавными) — является константой
  • Основное слово в имени должно начинаться с заглавной буквы,

Явное и неявное объявление

Явное объявление переменной – является хорошим стилем программирования, идет ключевое слово dim, а далее имя переменной с указанием или без указания типа данных (ключевое слово As). Явное объявление дает следующий приоритет: Время обработки ускоряется, так как язык VBA автоматически создает в памяти все объявленные переменные перед выполнением кода. Также сам код становится более читабельным.

Например:

Dim MyVar

Dim MyDate as Date, MyStr, My Bool

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

Типизированные переменные VBA

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

Создайте новую форм с двумя текстовыми метками и одной кнопкой и пропишите в редакторе код:

Sub Get_Date()    Dim MyByte AsByte    Dim MyA, MyB, MyC    MyByte = 100    MyA = "строка"    MyB = 23.5    MyC = #11/20/2000 12:55:00 PM#    dDate_1 = 12345    dDate_2 = #12/30/1986 12:22:00 PM#    dDate_3 = #10/5/1999#    Label1.Caption = MyByte & vbCrLf & MyA & vbCrLf & MyB & vbCrLf & MyC    ' Неявное объявление    MyVar = 12.234    Label2.Caption = MyVarEndSub PrivateSub CommandButton1_Click()    Call Get_DateEndSub

Что бы обезопасить себя от неявного объявления переменной, в самом начале стоит прописать выражение Option Explicit, в итоге, если в теле сценария будет идентификатор, которого нет в блоке dim, то возникнет ошибка.

Строки фиксированной и переменной длины

За строковые данные отвечает тип String. Как правило, нам нет необходимости контролировать длину строки, но при желании, это можно сделать, например:

OptionExplicitSub Get_Date()    Dim MyStr AsString    Dim MyA AsString * 5, MyB AsString * 2    MyStr = "Простоя строка"    MyA = "строка"    MyB = "строка"    Label1.Caption = MyStr & vbCrLf & MyA & vbCrLf & MyBEndSub PrivateSub CommandButton1_Click()    Call Get_DateEndSub

Тут мы в самом начале прописали проверку переменных, при нажатии на кнопку будет вызываться процедура Get_Date. В теле процедуры Get_Date мы объявили три переменные, типа String, для MyA и MyB мы определили фиксированную длину в 2 и пять символов, поэтому, строковое значение “строка” будет обрезаться до заданного размера.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий