Чтение онлайн

ЖАНРЫ

VBA для чайников

Каммингс Стив

Шрифт:

Параметры компилятора

Последний класс операторов представляет собой инструкции для управления поведением компилятора VBA. К операторам, задающим параметры компилятора, относятся следующие.

Оператор

Выполняемое действие

Option Base число

Установка правила нумерации массивов переменных – начинать нумерацию по умолчанию с 0 или 1 (подробности в главе 13)

Option Compare метод

Выбор метода, используемого VBA для сравнения строковых переменных (текста). Вместо слова метод можно указать Binary для сравнения на основе числового кода символов, Text для сравнения, при котором не учитывается регистр символов, или Database (только в Access) -для сравнения в порядке, отвечающем порядку сортировки соответствующей базы данных

Option Private Module

В

результате помещения такого оператора в раздел Declarations модуля другие проекты не смогут получить доступ к процедурам, переменным и константам этого модуля, даже если эти объекты объявлены как открытые (подробно об области видимости см. выше в разделе Обзор области видимости)

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

Поделиться с друзьями: