|
|||||||
Переменные VBA
Время создания: 16.03.2019 23:43
Текстовые метки: переменные, VBA
Раздел: Разные закладки - VBA
Запись: xintrea/mytetra_db_adgaver_new/master/base/1514446645v3fmoas1zr/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Переменные VBA: объявление переменных, правила именования, типы данных VBA Переменные — контейнеры для хранения изменяемых данных. Без них не обходится практически ни одна программа. Для простоты переменную можно сравнить с номерком в гардеробе — вы сдаете в “гардероб” какие-то данные, в ответ вам выдается номерок. Когда вам опять потребовались эти данные, вы “предъявляете номерок” и получаете их. Пример работы с переменными в VBA может выглядеть так: Dim nMyAge As Integer nMyAge = nMyAge + 10 MsgBox nMyAge Перед работой с переменной настоятельно рекомендуется ее объявить. Объявление переменной в нашем примере выглядит так: Dim nMyAge As Integer Как расшифровать эту строку: Dim — это область видимости переменной. В VBA предусмотрено 4 ключевых слова для определения области видимости переменных:
Static nVar1 As Integer nVar1 = nVar1 + 1 MsgBox nVar1 Если нет никаких особых требований, то есть смысл всегда выбирать область видимости Dim. Второе слово в нашем объявление (nMyAge) — это идентификатор (проще говоря, имя) переменной. Правила выбора имен в VBA едины для многих элементов (переменные, константы, функции и процедуры и т.п.). Имя:
При создании программ VBA настоятельно рекомендуется определиться с правилами, по которым будут присваиваться имена объектам — соглашение об именовании. Чаще всего используется так называемое венгерское соглашение (в честь одного из программистов Microsoft, Charles Simonyi, венгра по национальности):
MsgBox objMyDocument.Name Sub CheckDateSub()
COMPANY_NAME Многие программисты используют такой подход для обозначения констант и сейчас (но использование ключевого слова Const теперь обязательно — об этом будет рассказано в следующем разделе). Третья часть нашего объявления — As Integer — это указание на тип данных нашей переменной. Тип данных определяет, данные какого вида можно будет хранить в нашей переменной. В VBA предусмотрены следующие типы данных:
Внимание! Попытка объявить переменную с типом Decimal (например, Dim n As Decimal) приведет к синтаксической ошибке. Чтобы получить возможность работать с типом Decimal, переменную нужно изначально объявить как Variant или вообще объявить без типа (Dim n), поскольку тип данных Variant используется в VBA по умолчанию.
Можно еще использовать пользовательские типы данных, но их вначале нужно определить при помощи выражения Type. Обычно пользовательские типы данных используются как дополнительное средство проверки вводимых пользователем значений (классический пример — почтовый индекс). Некоторые моменты, связанные с выбором типов данных для переменных:
nVar1% = nVar1% + 1 Такой подход является устаревшим и к использованию не рекомендуется. При объявлении переменных можно и не указывать ее тип. Например, наше объявление может выглядеть так: Dim nVar1 В этом случае переменная будет автоматически объявлена с типом Variant. В принципе, в VBA можно работать и без объявления переменных. Например, такой код nVar1 = nVar1 + 1 MsgBox nVar1 будет вполне работоспособным. Если мы используем переменную в программе без ее объявления, то будет автоматически создана новая переменная типа Variant. Однако объявлять переменные нужно обязательно! И при этом желательно явно указывать нужный тип данных. Почему:
первый вариант: Dim oWbk As Workbook Set oWbk = Workbooks.Add() второй вариант: Set oWbk = Workbooks.Add() Но подсказка по свойствам и методам объекта oWbk будет работать только во втором случае. Все опытные разработчики вообще запрещают использование переменных без явного их объявления. Для этого можно воспользоваться специальной командой компилятора (она помещается только в раздел объявлений модуля) Option Explicit а можно вставлять эту команду во все модули при их создании автоматически — установив в окне редактора кода флажок Require Variable Declarations (меню Tools -> Options, вкладка Editor). Проиллюстрировать, зачем они это делают, можно на простом примере: Dim n n = n + 1 MsgBox п С виду код не должен вызывать никаких проблем и просто выводить в окне сообщения единицу. На самом деле он выведет пустое окно сообщения. Причина спрятана очень коварно: в третьей строке n — это вовсе не английская буква N, а русская П. На вид в окне редактора кода отличить их очень сложно. В то же время компилятор VBA, встретив такой код, просто создаст новую переменную с типом данных Variant, у которой будет пустое значение. На выявление такой ошибки может потребоваться определенное время. Хорошее правило — объявлять переменные заблаговременно, а не когда они потребовались. Это позволяет сделать программу более читаемой и четко спланированной. Можно объявить несколько переменных в одной строке, например, так: Dim n1 As Integer, s1 As String Присвоение значений переменным выглядит так: nVar1 = 30 Если нужно увеличить уже существующее значение переменной, то команда может выглядеть так: nVar1 = nVar1 + 1 В обоих примерах знак равенства означает не “равно”, а присвоить. При присвоении значений переменным нужно помнить о следующем:
sVar1 = “Hello”;
dVar1 = #05/06/2004# Обратите внимание, что при присвоении значения даты/времени таким “явным способом” нам придется использовать принятые в США стандарты: 05 в данном случае — это месяц, 06 — день. Отображение же этого значения (например, в окне сообщения) будет зависеть от региональных настроек на компьютере пользователя. Если нужно передать шестнадцатеричное значение, то перед ним ставятся символы &H: nVar1 = &HFF00 Что содержится в переменных до присвоения им значений?
|
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|