VBA для чайников
Шрифт:
Параметры компилятора
Последний класс операторов представляет собой инструкции для управления поведением компилятора VBA. К операторам, задающим параметры компилятора, относятся следующие.
Оператор | Выполняемое действие |
Option Base число | Установка правила нумерации массивов переменных – начинать нумерацию по умолчанию с 0 или 1 (подробности в главе 13) |
Option Compare метод | Выбор метода, используемого VBA для сравнения строковых переменных (текста). Вместо слова метод можно указать Binary для сравнения на основе числового кода символов, Text для сравнения, при котором не учитывается регистр символов, или Database (только в Access) -для сравнения в порядке, отвечающем порядку сортировки соответствующей базы данных |
Option Private Module | В |
Option Explicit | Это единственный из операторов, задающих параметры компилятора, о котором следует знать и который стоит использовать. В результате помещения этого оператора в модуль VBA запрещает использовать переменные без их предварительного явного объявления (подробности в главе 7) |
Выбор имен
В определенных рамках вы имеете возможность совершенно произвольно выбирать имена для переменных, процедур и всего другого, что вы создаете. Следующие правила применимы ко всем именованным элементам в VBA-программе. включая переменные, константы, типы данных, процедуры, модули, формы и проекты.
* Имена должны начинаться с буквы, но не с цифры. После первой буквы уже могут идти и цифры, и символ подчеркивания, как, например, в имени Скоытая_ПеремекнаяЗ
* Кроме символа подчеркивания, все остальные знаки пунктуации для использования в именах в VBA запрещены:
! • $ # 7 , . ( точка) { } [ ] = - ́ % / ~ : ;
* Не допускаются пробелы в именах.
* Длина имени не должна превышать 255 символов (40 символов - для форм и элементов управления).
* Имя должно, не совпадать ни с каким ключевым словом, функцией или оператором VBA.
* В рамках одной и той же области видимости одно и то же имя нельзя использовать для двух разных объектов. Например, все процедуры в модуле должны иметь разные имена. Не допускается, чтобы переменная процедуры и переменная уровня модуля (определенная в разделе Declarations модуля) имели одинаковые имена. Однако можно использовать одно и то же имя для разных переменных, если эти переменные локальны и размещаются в разных процедурах.
Если вы попытаетесь ввести имя, нарушающее эти правила, редактор Visual Basic сообщит об этом, как только вы уберете текстовый курсор из соответствующей строки программного кода. Символы в строке станут красными, и на экране возникнет сообщение с так называемым объяснением ошибки (рис. 6.1). Исключение: предупреждение о дублировании имен процедур не появится до тех пор. пока программа не начнет выполняться.
Рис. 6.1. Редактор Visual Basic предупреждает, что введено недопустимое имя
Вот несколько примеров допустимых и недопустимых имен.
В VBA прописные и строчные буквы не различаются, но введенные вами прописные буквы любезно сохраняются. Предположим, что вы объявили переменную, имя которой состоит только из прописных букв, например:
Dim LOUCVARIABLE As String
Допустимое | Недопустимое |
а | ИмяБолее255СимволовНеПоместившеесяЗдесь... |
Go4It | 4ScoreArd7 |
You_Did_It | WhoDunIt? |
СиниеГлаза | Черные Глаза |
В программном коде все равно можно будет печатать имя переменной, используя как прописные, так и строчные буквы. Например, в каждом из следующих трех операторов используется одна и та же переменная:
loudvariabie = Ярко-красная
10UDvARIABLE =Ucase(10UDvARIABLE)
MsgBox(LoudVariable)
Конечно, слишком долго наслаждаться альтернативными версиями имени вам не удастся.
Редактор Visual Basic запоминает то имя, которое вы задаете в объявлении, и если вы напечатаете имя как-то иначе, оно будет автоматически скорректировано, как только вы перейдете в другую строку.
Соглашения об именах в VBA
В рамках правил, обсуждавшихся в предыдущем разделе, объектам программы можно назначать любые имена. Тем не менее можно значительно облегчить себе жизнь в программировании, если придерживаться определенной логичной схемы выбора имен. По мере того как ваши программы будут становиться длиннее, все труднее будет помнить о типе и назначении каждой конкретной переменной. Поэтому имеет смысл научиться создавать имена, которые смогут кое-что подсказать.
В идеале, нужно выбрать определенный метод и строго его придерживаться. Один такой метод, используемый многими программистами, состоит в том, чтобы имя начиналось с некоторого префикса, соответствующего типу объекта, а за префиксом следовало сокращенное описательное имя, которое начинается с прописной буквы. Например, если при создании программы инвентаризации требуется целая переменная, в которой должен храниться инвентарный номер, то вполне подходящим именем для такой переменной будет intPartNo.
В табл. 6.1 приведены префиксы,
рекомендуемые для часто используемых объектов VBA.Вместо предложенных вы можете создать свои собственные или использовать их как суффиксы. Главное- непременно их использовать.
В главах 1-5 я не придерживался этих соглашений по той простой причине, что сначала их нужно было объяснить. Но начиная с этой главы я постараюсь следовать тому, что здесь проповедую.
Таблица 6.1. Префиксы, рекомендуемые для имен объектов VBA
Префикс | Тип объекта | Пример |
Переменные | ||
byt | Byte | BytDaysInMonth |
bool | Boolean | BooIClearedStacus |
int | Integer | IntWeeksOnChart |
lng | Long integer | LngPopulation |
sng | Single | SngRadius |
dbl | Double | DblParsecs |
cur | Currency | CurUnitPrice |
str | String | StrLastNarae |
date | Date/Time | DateBirthdate |
var | Variant | VarSerialNumber |
obj | Object | ObjStampCo11ection |
Элементы управления | ||
Txt | Text box (текстовое поле) | TxtEnterName |
lbl | Label (надпись) | LblAnswerMessage |
cmd | Command button (кнопка) | CmdCalculateInterestRate |
mnu | Menu (меню) | MnuTools |
Cmb | Combo box (поле со списком) | CmbToyCategory |
fra | Frame (фрейм) | FraHabitat |
opt | Option button (переключатель) | OptGasolineGrade |
Chk | Check box (флажок) | ChkCaseSensiuive |
Другие | ||
Bas | Module (модуль) | BasTextFormatFunctions |
Frm | UserForm (пользовательская форма) | FrmOptionsDialog |
Сделайте программный код красивым
В общем-то, программному коду совсем не обязательно выглядеть красиво - нужно, чтобы он легко читался. В этом разделе предлагается несколько простых рекомендаций по оформлению программного кода для того, чтобы вам было легче расшифровать свой же программный код завтра, через неделю или в следующем году, если это потребуется.
Отступы в программе
Запомните: следует выработать правила использования отступов и неуклонно их придерживаться. Компилятор VBA игнорирует все пробелы в начале строк, так что вы можете смело использовать отступы для наведения порядка. Сравните следующие два фрагмента программного кода и решите, какой из них легче понять:
If intA = 27 Then
If txtChooseColor.Text = Беж Then
intA = 33
intB = 0
End If
For Each objCbar In CommandBars
If objCbar.Name = Моя панель инструментов Then
If objCbar.Visible = False Then
objCbar.Visible = True
end If
End If
Next objCbar
End If
* * *
If intA = 27 Then
If txtChooseColor.Text = Беж Then
intA = 33
intB = 0
End If
For Each objCbar In CommandBars
If objCbar.Name = Моя панель инструментов Then
If objCbar.Visible = False Then
objCbar.Visible = True
end If
End If
Next objCbar
End If