0

Как в visual basic объявить переменную

В Visual Basic переменные хранят информацию (значения). При их использовании Visual Basic резервирует область в памяти компьютера для хранения данной информации. Имена переменных могут достигать 255 символов в длину, начинаются они с буквы, за которой могут следовать другие буквы, цифры или символы подчеркивания. Регистр символов и наименований переменной значения не имеет. Следующая таблица перечисляет некоторые возможные имена переменных и объясняет, подходят ли они по стандарту.

Base1_Ball Подходит
1Base_Ball Не подходит, так как начинается не с буквы.
Base.1 Не подходит, так как используется точка.
Base&1 Не подходит, так как используется амперсанд.
ThisIsLongButOK Не подходит, так как длина всего 15 символов.

Все символы в имени переменной являются значимыми, но их регистр не имеет значения. BASE обозначает ту же переменную, что и base. С другой стороны, Base отличается от Base 1, и оба они – от Base_ I. Однако Visual Basic всегда изменяет первую букву переменной на заглавную при ее определении.
Использование осмысленных имен помогает документировать текст программы и облегчает неизбежный процесс ее отладки. Выразительное имя переменной является прекрасным способом для объяснения смысла применения многих инструкций в коде программы.
В качестве имен новых переменных нельзя использовать зарезервированные слова; например. Print не подходит для этого. Однако такие слова могут присутствовать как часть имени переменной, например, Printlt. Visual Basic будет выдавать сообщение об ошибке, если программист попытается использовать зарезервированное слово в качестве названия своей переменной, причем обычно сразу после нажатия клавиши ENTER.
Одно из наиболее общих соглашений об именах переменных состоит в использовании заглавных букв в начале каждого из слов, составляющих данное имя (например, Printlt, а не Printit). Это соглашение носит название "имена переменных со смешанным регистром". Оно используется и в данной книге, поскольку большинство людей находят такие имена переменных более читабельными. Некоторые еще используют и символ подчеркивания (например, Print_It), но здесь данный стиль не используется, поскольку отнимает много места и иногда вызывает проблемы при отладке.

Visual Basic работает с 14 стандартными типами переменных. Кроме того, программист может определить собственный тип данных. В данном разделе описаны те из них, которые в основном применяются при работе с данными.

String
Строковые переменные хранят символы. Один из способов обозначить данный тип переменной состоит в добавлении символа "$" к концу ее имени, например: AStringVariable$. Теоретически такая переменная может содержать до 2 миллиардов символов. В любом случае на конкретном компьютере это число будет гораздо меньше из-за ограниченных объемов оперативной памяти, ресурсов Windows или числа символов, используемых в форме.
Одно из наиболее основных применений строковых переменных состоит в выборе информации из полей ввода. Например, если есть поле ввода с именем Textl, то тогда оператор ContentOfTextlS = Textl.Text присваивает строку из поля ввода переменной в левой части данного оператора.

Integer
Целочисленные переменные могут хранить только относительно небольшие целые числа (в диапазоне от -32768 до +32767). Арифметические операции над такими числами выполняются очень быстро. Для обозначения такого типа используется символ "%":
AnIntegerVariable% = 3

Long Integer
Данный тип впервые появился в языке QuickBASIC. В таких переменных хранятся целые значения от -2 147483648 до +2 147483647. Обозначается символом "&". Арифметические операции над такими числами выполняются тоже очень быстро, и при работе с процессором 386DX или 486DX существует лишь небольшая разница в скорости вычислений между Long Integer и Integer.

ALongIntegerVariableS = 123456789 Single Precision

Идентификатором для данных чисел является символ "!". Данный тип переменной позволяет хранить дробные числа с точностью до семи цифр. Это означает, что если получается результат 12345678.97, то часть 8.97 не является точной. Результат может быть равен, к примеру, 12345670.01. Длина чисел может достигать 38 знаков. Вычисления с данными переменными тоже будут приблизительными. Более того, арифметические действия выполняются медленнее, чем с целочисленными переменными.

Double Precision
Переменные такого типа позволяют хранить числа с точностью до 16 цифр и длиной до 300 символов. Идентификатором является "#". Вычисления с ними тоже являются приблизительными, а скорость их относительно небольшая. В основном переменные типа Double Precision используются для научных расчетов.

Currency
Данный тип отсутствовал в версиях GW-BASIC и QuickBASIC. Он создан для того, чтобы избежать ошибок при преобразовании десятичных чисел в двоичную форму и наоборот. (Невозможно 1/10 представить как сумму 1/2,1/4, 1/8, 1/16 и т.п.) Данный тип может иметь до 4 цифр после запятой, и до 14 – перед ней. Внутри данного диапазона вычисления будут точными. Идентификатор представляет собой символ "@". Поскольку все арифметические операции, кроме сложения и вычитания, выполняются так же медленно, как и в случае переменных с двойной точностью, данный тип является предпочтительным для проведения финансовых расчетов. (Для тех, кто интересуется: данный тип использует целые числа из 19 разрядов, которые затем делятся на 10000. Это позволяет организовать 15 знаков до запятой и 4 после нее.)

Date
Этот тип данных позволяет хранить значения времени и даты в промежутке от полуночи 1 января 100 года до полуночи 31 декабря 9999 года. Такие значения в тексте программ обозначаются символами "#", например:
Millenium = #January 1, 2000#
Если вводится только значение даты, Visual Basic полагает, что время равняется 00:00.

Byte
Байтовый тип является новым в Visual Basic 5 и предназначен для хранения целых чисел от 0 до 255. Его использование позволяет сильно экономить оперативную память и уменьшать размер массивов (см. главу 10) по сравнению с предыдущими версиями Visual Basic. Кроме того, он используется при работе с двоичными файлами.

Boolean
Булев тип данных может хранить только два значения: True либо False. Его использование вместо целочисленных переменных является хорошим стилем программирования.

Variant
Данный тип добавлен в Visual Basic 5 из версии 2.0. Переменная типа variant может содержать данные любого типа. Если Visual Basic не знает тип принимаемых данных, необходимо использовать variant.
Тип информации не имеет значения, поскольку variant может содержать любой тип данных (численный, дата/ время, строковый). Visual Basic автоматически производит необходимые преобразования данных, поэтому не стоит беспокоиться об этом. С другой стороны, можно использовать встроенные функции для проверки типа данных, хранящихся в переменной типа variant. Они позволяют легко проверить, правильно ли пользователь вводит информацию.
Использование такого типа данных, как variant, замедляет работу программы, так как требуется время и ресурсы для операций преобразования типов. Кроме того, многие программисты понимают, что использование автоматических преобразований типов данных приводит к неаккуратному виду программ. Единственная причина в использовании variant состоит в возможных ошибках при преобразовании типов непосредственно программистом.

Подробнее о переменных

В отличие от большинства версии BASIC, в одной программе Visual Basic нельзя использовать имена переменных, отличающиеся только типом (идентификатором), например, А% и А!. При попытке использовать двойное имя возникает ошибка "двойное определение" (duplicate difmition) при запуске программы.
При первом использовании переменной Visual Basic временно присваивает ей пустое значение и тип variant. Это значение исчезает в тот момент, когда переменной присваивают реальное. Каждый тип данных имеет свой образец "пустого" значения. Для строковых переменных это строка нулевой длины (" "). Для численных переменных это ноль. Полагаться можно только на значения по умолчанию, если они документированы (например, в комментариях). Иначе придется столкнуться с множеством трудно уловимых ошибок. Поэтому рекомендуется инициализировать значения переменных в первых строках процедур обработки событий.

Пример: обмен значениями
Одной из распространенных задач является обмен значениями между двумя переменными. Удивительно, но разработчики Visual Basic убрали из языка оператор Swap, известный в QuickBASIC. Поэтому код придется писать самим. Предположим, что есть две переменные х и у, и попробуем поменять местами их значения:

Такой вариант работать не будет, но важно разобраться из-за чего. Первый оператор присваивает переменной х значение переменной у, но тем самымуничтожает старое значение х.. В результате второй оператор присваивает переменной у ее же первоначальное значение. Решение состоит в использовании временной переменной:

temp = х ‘Копирует старое значение х в temp
х = у ‘Теперь х содержит старое значение у
у = temp ‘Теперь у содержит оригинальное значение х

Объявление переменных: оператор Dim для различных типов данных

Большинство людей предпочитают не пользоваться идентификаторами для обозначения типа переменной (тем более, что для таких типов, как дата/время, вообще не существует идентификаторов). Вместо этого они используют оператор Dim. Такая операция носит название объявления. Объявление типов переменных в процедурах обработки событий перед их использованием – и, естественно, с комментариями – является хорошим стилем в программировании. Это также помогает улучшить читабельность текстов программ.

Private Sub cmdCalculate Click
‘Данная процедура вычисляет проценты по закладной
Dim Years As Integer
Dim Rate As Currency
Dim Amount As Currency
Dim I As Integer
Dim TextBox As String
Dim Interest As Currency End Sub

Объявления переменных можно комбинировать в одной строке, например:
Dim Year As Integer, Rate As Currency, Name As String

Предупреждение: Общей ошибкой является использование следующего выражения:

Dim X, Y, Z As Integer

в предположении, что все три переменные будут целого типа. Фактически в данном случае переменные Х и Y будут объявлены как variant, и только Z – как integer. Чтобы избежать этого, необходимо каждый раз использовать идентификатор типа.

Читайте также:  Бесплатный номер ростелекома техподдержка интернет

Если переменная объявлена при помощи оператора Dim, в случае использования переменной с тем же именем и другим идентификатором типа произойдет ошибка "двойное определение" при запуске программы. Например, если следующее выражение Dim Count As Integer объявляет переменную Count, то нельзя использовать переменные CountS, Count!, Count# и Count@. Можно использовать только имя Count%, но это всего лишь другая форма для имени переменной Count.
И, наконец, чтобы присвоить переменной тип variant, используют оператор Dim без As:

Dim Foo ‘объявляет Foo переменной типа variant

Можно написать и так:

Dim Foo As Variant ‘ проще для прочтения

Примечание: Некоторые программисты используют соглашение о наименованиях, по которому перед именем переменной указывается префикс с ее типом строчными буквами, например, sngInterestRate или intCount.

Необходимость объявления переменных

Одной из наиболее общих ошибок в программах является использование необъявленных переменных. Проблема состоит в том, что Visual Basic позволяет создавать переменные "на лету", как только они первый раз встречаются в программе. Если перепутать имя переменной. Visual Basic создаст новую с похожим именем и присвоит ей значение по умолчанию, что тут же приведет к ошибкам. Эту ошибку трудно обнаружить, поскольку имена переменных очень похожи.
Простейший способ избежать подобных ошибок состоит в принудительном объявлении всех переменных. Тогда при ошибке в имени переменной будет выдано сообщение. Разработчики Visual Basic предусмотрели такую возможность работы, но по умолчанию она не используется.
Оператор, необходимый для этого, называется Option Explicit. Это первый из операторов, не используемый в процедурах обработки событий. Хороший способ запомнить для себя его принцип работы состоит в использовании Option Explicit для изменения значений по умолчанию.

Примечание: Любая информация, которая должна быть доступна всем процедурам обработки событий, относящихся к форме, размещается в разделе (General) данной формы.

Для того чтобы поместить Option Explicit в раздел (General), необходимо:

  • Открыть окно Code.
  • Выбрать объект (General) из списка объектов, представленных в окне Object.
  • Выбрать (Declaration) из списка Ргос.
  • Ввести Option Explicit.

Примечание: Часто использовать объявления на уровне формы в разделе (General) понадобится, когда читатель будет экспериментировать с примерами программ из справочной системы.

(Для копирования примера программы из справочной системы можно использовать кнопку Copy в окне Code для примера. Затем можно использовать пункт Paste из меню Edit для вставки примера в окно Code.). После того как Visual Basic встречает команду Option Explicit, он более не позволяет использовать необъявленные переменные. Если попробовать все же применить такую переменную, будет выдано сообщение об ошибке, как показано ниже.

Совет: Чтобы использовать обязательное объявление типа переменной, можно воспользоваться страницей Editor диалоговой панели Tools|0ptions. Автор (и, по его сведениям, все серьезные программисты) всегда устанавливает данный флажок. После этого оператор Option Explicit автоматически вставляется в те места кода, где это необходимо.

Изменение значений по умолчанию для типов

Следующее выражение автоматически присваивает переменным I, J и К тип variant:

Предположим, в новой программе почти все переменные должны быть целочисленными. В таком случае удобно организовать их объявление так, чтобы переменная, для которой не указан тип, больше не объявлялась как variant. Для этого используется оператор DefType. В следующей таблице приведено несколько примеров его использования:

Оператор DefType Описание
DefInt A-Z Все переменные получают тип integer.
DefInt I-J Все переменные, начинающиеся с букв I и J, получают тип integer.
DefStr S-Z Все переменные, начинающиеся с букв от S до Z, получают тип String

В частности, можно установить соглашение, что все переменные, начинающиеся с I, будут целочисленными, с помощью Deflnt I. После этого оператор Dim I. будет объявлять переменные типа integer. Основные формы различных операторов DefType, необходимых в данной главе:

Deflnt диапазон букв (для integer)
DefLng диапазон букв (для long integer)
DefSng диапазон букв (для single precision)
DefDbl диапазон букв (для double precision)
DefCur диапазон букв (для currency)
DefStr диапазон букв (для string)
DefVar диапазон букв (для variant)
DefBooi диапазон букв (для boolean)
DefByte диапазон букв (для byte)
DefDate диапазон букв (для date)

Буквы не обязательно должны быть заглавными: DefStr s-Z и DefStr S-Z работают одинаково. Соглашения о типах можно всегда изменить, используя идентификатор или оператор Dim для конкретной переменной. Оператор DefType размещают в том же разделе (General), что и Option Explicit.

Область видимости переменных

Программисты применяют термин область видимости, когда хотят сказать о возможности использования переменной из одной части программы в другой ее части. В старых языках программирования все переменные были доступны во всех частях программы, поэтому сохранение целостности наименований представляло большую проблему. Например, если в приложении использовались две переменные Total, то их значения уничтожали друг друга.
Решение данной проблемы в современных языках высокого уровня, таких как Visual Basic, состоит в изолировании переменных внутри процедур. До тех пор пока это не задано специальным образом, значение переменной Total в одной процедуре никак не влияет на значение переменной с таким же именем в другой процедуре. В терминах программирования данный подход означает, что данные переменные являются локальными по отношению к процедурам, если не указано иначе. В частности, процедура обработки события обычно не имеет никакой связи с другой процедурой того же типа. Обычно не принято работать с переменными по умолчанию. Если необходимо быть уверенным, что данная переменная является локальной, нужно объявить ее внутри процедуры события при помощи оператора Dim.

1. Электромагнитная волна (в религиозной терминологии релятивизма – "свет") имеет строго постоянную скорость 300 тыс.км/с, абсурдно не отсчитываемую ни от чего. Реально ЭМ-волны имеют разную скорость в веществе (например,

200 тыс км/с в стекле и

3 млн. км/с в поверхностных слоях металлов, разную скорость в эфире (см. статью "Температура эфира и красные смещения"), разную скорость для разных частот (см. статью "О скорости ЭМ-волн")

2. В релятивизме "свет" есть мифическое явление само по себе, а не физическая волна, являющаяся волнением определенной физической среды. Релятивистский "свет" – это волнение ничего в ничем. У него нет среды-носителя колебаний.

3. В релятивизме возможны манипуляции со временем (замедление), поэтому там нарушаются основополагающие для любой науки принцип причинности и принцип строгой логичности. В релятивизме при скорости света время останавливается (поэтому в нем абсурдно говорить о частоте фотона). В релятивизме возможны такие насилия над разумом, как утверждение о взаимном превышении возраста близнецов, движущихся с субсветовой скоростью, и прочие издевательства над логикой, присущие любой религии.

4. В гравитационном релятивизме (ОТО) вопреки наблюдаемым фактам утверждается об угловом отклонении ЭМ-волн в пустом пространстве под действием гравитации. Однако астрономам известно, что свет от затменных двойных звезд не подвержен такому отклонению, а те "подтверждающие теорию Эйнштейна факты", которые якобы наблюдались А. Эддингтоном в 1919 году в отношении Солнца, являются фальсификацией. Подробнее читайте в FAQ по эфирной физике.

При объявлении переменных обычно используется оператор Dim. When declaring variables, you usually use a Dim statement. Оператор объявления может быть помещен внутрь процедуры для создания переменной на уровне процедуры. A declaration statement can be placed within a procedure to create a procedure-level variable. Или он может быть помещен в начале модуля в разделе объявлений, чтобы создать переменную на уровне модуля. Or it may be placed at the top of a module, in the Declarations section, to create a module-level variable.

В примере ниже создается переменная и указывается тип данных "String". The following example creates the variable and specifies the String data type.

Если данный оператор отображается в процедуре, переменная strName может использоваться только в этой процедуре. If this statement appears within a procedure, the variable strName can be used only in that procedure. Если же оператор отображается в разделе объявлений модуля, переменная strName доступна для всех процедур данного модуля, но недоступна для процедур других модулей проекта. If the statement appears in the Declarations section of the module, the variable strName is available to all procedures within the module, but not to procedures in other modules in the project.

Чтобы предоставить доступ к переменной всем процедурам проекта, перед ней нужно поставить оператор Public, как показано в примере ниже: To make this variable available to all procedures in the project, precede it with the Public statement, as in the following example:

Дополнительные сведения об именовании переменных см. в статье Правила именования в Visual Basic. For information about naming your variables, see Visual Basic naming rules.

Переменные могут быть объявлены одним из следующих типов данных: Boolean, Byte, Integer, Long, Currency, Single, Double, Date, String (для строк переменной длины), String * length (для строк фиксированной длины), Object или Variant. Variables can be declared as one of the following data types: Boolean, Byte, Integer, Long, Currency, Single, Double, Date, String (for variable-length strings), String * length (for fixed-length strings), Object, or Variant. Если тип данных не указан, по умолчанию присваивается тип Variant. If you do not specify a data type, the Variant data type is assigned by default. Вы также можете создать определяемый пользователем тип с помощью оператора Type. You can also create a user-defined type by using the Type statement.

Вы можете объявить несколько переменных в одном операторе. You can declare several variables in one statement. Чтобы указать тип данных, необходимо задать тип данных для каждой переменной. To specify a data type, you must include the data type for each variable.

Читайте также:  Выход новой консоли xbox

В приведенном ниже операторе переменные intX , intY и intZ объявлены типом Integer. In the following statement, the variables intX , intY , and intZ are declared as type Integer.

В приведенном ниже операторе intX и intY объявлены как Variant и только intZ объявлен как тип Integer. In the following statement, intX and intY are declared as type Variant, and only intZ is declared as type Integer.

Нет необходимости указывать тип данных переменной в операторе объявления. You don’t have to supply the variable’s data type in the declaration statement. Если вы не укажите тип данных, переменной будет присвоен тип Variant. If you omit the data type, the variable will be of type Variant.

Оператор Public Public statement

Оператор Public используется для объявления общих переменных на уровне модуля. You can use the Public statement to declare public module-level variables.

Общие переменные могут использоваться в любой процедуре проекта. Public variables can be used in any procedures in the project. Если общая переменная объявлена в стандартном модуле или модуле класса, она может использоваться в любых проектах, содержащих ссылку на проект, в котором объявлена данная общая переменная. If a public variable is declared in a standard module or a class module, it can also be used in any projects that reference the project where the public variable is declared.

Оператор Private Private statement

Оператор Private используется для объявления частных переменных на уровне модуля. You can use the Private statement to declare private module-level variables.

Частные переменные могут использоваться только процедурами одного модуля. Private variables can be used only by procedures in the same module.

На уровне модуля оператор Dim является эквивалентным оператору Private. When used at the module level, the Dim statement is equivalent to the Private statement. Вы можете использовать оператор Private, чтобы упростить чтение и интерпретацию кода. You might want to use the Private statement to make your code easier to read and interpret.

Оператор Static Static statement

Если для объявления переменной в процедуре используется оператор Static вместо оператора Dim, объявленная переменная сохраняет свое значение между вызовами в этой процедуре. When you use the Static statement instead of a Dim statement to declare a variable in a procedure, the declared variable will retain its value between calls to that procedure.

Оператор Option Explicit Option Explicit statement

В Visual Basic можно неявно объявить переменную, просто используя оператор присвоения значения. You can implicitly declare a variable in Visual Basic simply by using it in an assignment statement. Все неявно объявленные переменные относятся к типу Variant. All variables that are implicitly declared are of type Variant. Для переменных типа Variant требуется больший объем памяти, чем для большинства других переменных. Variables of type Variant require more memory resources than most other variables. Приложение будет работать эффективнее, если переменные будут явно объявленными и им будет присвоен определенный тип данных. Your application will be more efficient if you declare variables explicitly and with a specific data type. Явное объявление переменных снижает вероятность возникновения ошибок, вызванных конфликтом имен или опечатками. Explicitly declaring all variables reduces the incidence of naming-conflict errors and spelling mistakes.

Если вы не хотите, чтобы в Visual Basic были неявные объявления, то оператор Option Explicit должен стоять в модуле перед всеми процедурами. If you don’t want Visual Basic to make implicit declarations, you can place the Option Explicit statement in a module before any procedures. Этот оператор требует явного объявления всех переменных модуля. This statement requires you to explicitly declare all variables within the module. Если модуль содержит оператор Option Explicit, то при обнаружении необъявленной ранее переменной или опечатки в ее имени Visual Basic выдаст ошибку времени компиляции. If a module includes the Option Explicit statement, a compile-time error will occur when Visual Basic encounters a variable name that has not been previously declared, or that has been spelled incorrectly.

В программной среде Visual Basic имеется возможность задавать параметр, который будет автоматически включать оператор Option Explicit во все новые модули. You can set an option in your Visual Basic programming environment to automatically include the Option Explicit statement in all new modules. Справочная информация по изменению параметров среды Visual Basic предоставлена в документации приложения. See your application’s documentation for help on how to change Visual Basic environment options. Обратите внимание, что данный параметр не меняет уже написанный код. Note that this option does not change existing code that you have written.

Статические и динамические массивы нужно объявлять в явном виде. You must explicitly declare fixed arrays and dynamic arrays.

Объявление объектной переменной для автоматизации Declaring an object variable for automation

При использовании приложения для управления объектами другого приложения необходимо указать ссылку на библиотеку типов этого другого приложения. When you use one application to control another application’s objects, you should set a reference to the other application’s type library. Когда ссылка указана, можно объявлять объектные переменные в соответствии с наиболее подходящими для них типами. After you set a reference, you can declare object variables according to their most specific type. Например, если вы указываете ссылку на библиотеку типов Microsoft Excel при работе в Microsoft Word, то можете объявить переменную типа Worksheet внутри Word, чтобы она представляла объект Worksheet приложения Excel. For example, if you are in Microsoft Word when you set a reference to the Microsoft Excel type library, you can declare a variable of type Worksheet from within Word to represent an Excel Worksheet object.

При использовании другого приложения для управления объектами Microsoft Access, как правило, можно объявлять объектные переменные согласно наиболее подходящим для них типам. If you are using another application to control Microsoft Access objects, in most cases, you can declare object variables according to their most specific type. Вы можете также использовать ключевое слово New для автоматического создания нового экземпляра объекта. You can also use the New keyword to create a new instance of an object automatically. Однако может возникнуть необходимость указать, что объект принадлежит Microsoft Access. However, you may have to indicate that it is a Microsoft Access object. Например, при объявлении объектной переменной, представляющей форму Access внутри Visual Basic, необходимо сделать различимыми объект Form приложения Access и объект Form приложения Visual Basic. For example, when you declare an object variable to represent an Access form from within Visual Basic, you must distinguish the Access Form object from a Visual Basic Form object. Для этого следует включать имя библиотеки типов в объявление переменной, как показано в примере ниже: Include the name of the type library in the variable declaration, as in the following example:

Некоторые приложения не распознают отдельные объектные типы Access. Some applications don’t recognize individual Access object types. Даже если в этих приложениях указана ссылка на библиотеку типов Access, все объектные переменные Access необходимо объявлять с типом Object. Even if you set a reference to the Access type library from these applications, you must declare all Access object variables as type Object. Также невозможно использовать ключевое слово New для создания нового экземпляра объекта. Nor can you use the New keyword to create a new instance of the object.

В примере ниже показано, как объявлять переменную, представляющую экземпляр объекта Application Access в приложении, которое не распознает объектные типы Access. The following example shows how to declare a variable to represent an instance of the Access Application object from an application that doesn’t recognize Access object types. Затем приложение создает экземпляр объекта Application. The application then creates an instance of the Application object.

В документации приложения предоставлена информация о поддерживаемом им синтаксисе. To determine which syntax an application supports, see the application’s documentation.

См. также See also

Поддержка и обратная связь Support and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Создание сайта

Переменные в Visual Basic

Справочные данные Visual Basic 6.0
Поэтапное создания программ
Элементы программирования
Основы программирования

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

Имена переменных

Для того чтобы сделать ваши переменные более наглядными и простыми для чтения, рекомендуется давать им имена, имеющие определенное смысловое значение. Существует несколько правил задания имен переменных;

  • имя переменной может содержать не более 255 символов;
  • имя переменной может содержать любые буквы и цифры;
  • первый символ в имени переменной должен быть буквой;
  • в имени переменной должны отсутствовать пробелы;
  • имя должно быть уникальным в пределах области видимости.

Список ограничений достаточно велик, чтобы знать его наизусть, но вам всегда поможет проверка синтаксиса программы, при выполнении которой будет указано на использование недопустимых имен.

Например, допустимы следующие имена переменных:
CurrentNum, Total, Date_of_birth
Следующие имена недопустимы:
1Time, $Total, Date of birth

Читайте также:  В мире компьютерных кодов

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

Типы данных

Для хранения чисел в Visual Basic используется пять разных типов данных. Для хранения целочисленных данных предназначены типы integer и Long. Первый из них служит для хранения целых чисел в диапазоне от —32768 до 32767 и занимает в оперативной памяти два байта.

Для хранения больших целочисленных значений в диапазоне от —2 147483648 до 2 147483648 следует выбрать тип данных Long. В этом случае для хранения переменной выделяется 4 байта. Аналогично, для хранения десятичных чисел с плавающей точкой предназначены типы данных single и Double.

Переменная с типом данных single занимает 4 байта и может принимать значения в диапазоне -3,4^38 . -1,4^-45 для отрицательных чисел и 1,4^-45 . 3,4^38 для положительных чисел. Если этого диапазона вам недостаточно, используйте десятичные числа с плавающей точкой двойной точности, определяя для них тип данных Double.

В этом случае переменной выделяется 8 байтов, которых достаточно для хранения чисел в диапазоне -1,7^-308 . -4,9^-324 для отрицательных чисел и 4,9^-324 . l,7^+308 для положительных чисел. Для хранения чисел с фиксированной точкой служит тип currency. Переменная данного типа занимает в оперативной памяти 8 байт. Целая часть числа может содержать до 15 цифр, а дробная — до 4.

Используя переменные строкового типа, вы можете хранить строки как фиксированной (до 216 символов), так и переменной длины (до 231 символов). Для переменной, имеющей тип строки с фиксированной длиной, ука зывается максимальная длина строки.

Если длина строки, присваиваемая этой переменной, меньше заданной длины строки, то оставшиеся свободные места заполняются пробелами. При присвоении переменной строки, количество символов которой превышает максимальное значение, все лишние символы отбрасываются.

Количество символов, хранящихся в строке с переменной длиной, определяется длиной присваиваемых ей данных. При использовании ASCCII кодировки для каждого символа строки выделяется один байт, а при использовании кодировки Unicode — два байта. Кроме этого выделяется 10 байт для строки в целом.

Для хранения двоичных данных рекомендуется использовать массив переменных типа Byte. Каждый элемент массива данного типа занимает один байт оперативной памяти.

Логический тип данных Boolean используется для хранения данных, принимающих одно из двух значений: True (Правда) или False (Ложь). По умолчанию переменной данного типа присваивается значение False. В оперативной памяти она занимает два байта.

Тип данных Date используется для хранения даты и времени. Переменная этого типа требует 8 байт в оперативной памяти. Тип данных Variant является универсальным. Переменная этого типа может хранить любой из выше описанных типов данных. Все необходимые преобразования выполняются при присвоении переменной значения. Выделяемый переменной объем оперативной памяти зависит от типа присвоенного значения, но не может быть менее 16 байт.

Для хранения ссылок на объекты используется тип данных object. Каждая переменная данного типа требует 4 байта. При разработке программ в среде Visual Basic в зависимости от типа данных переменных рекомендуется использовать префиксы, приведенные ниже

Префиксы, используемые в наименованиях переменных.

Тип данных Префикс Пример
Boolean bin bInSuccess
Byte byt bytImage
Currency cur curPrice
Date dtm dtmFinish
Double dbl dblSum
Integer int intQuantity
Long Ing IngTotal
Single sng sngLength
String str strLastname
Variant vnt vntValue

Объявление переменной

В Visual Basic используется явное и неявное объявление переменной. Явное объявление осуществляется операторами Dim, private, Static, public, которые имеют следующий синтаксис:

Dim имяПеременной [As типДанных]
Private имяПеременной [As типДанных]
Static имяПеременной [As типДанных]
Public имяПеременной [As типДанных]

Операторы Dim, Private, static, public определяют область действия переменной. С помощью одного оператора вы можете объявлять несколько переменных, разделяя их запятыми. Примеры объявления переменных приведены ниже:

Private bInSuccess As Boolean
Dim strLastname As String, dblSum As Double

Большинство строк, с которыми приходится работать в Visual Basic, являются строками переменной длины, то есть они могут иметь длину до 2 Гбайт. Длина такой строки изменяется при присвоении ей нового значения. Но в Visual Basic существуют и строки с фиксированной длиной.

Их длина остается неизменной независимо от присвоенного ей значения. Если такой переменной присваивается значение, меньшее объявленной для нее длины, то оставшаяся часть переменной заполняется пробелами. При присвоении значения, превышающего длину строки, она усекается до размера переменной.

Для объявления строки с фиксированной длиной используется следующий синтаксис:
Dim имяПеременной As String * длинаПеременной
Параметр длинаПеременной указывает максимальное количество символов, отводимое переменной. Символ звездочки (*) указывает на то, что переменная имеет фиксированную длину.

Предпочтительнее использовать явное объявление переменных, поэтому рекомендуется установить такой режим трансляции программы, при котором допускается только явное объявление переменных. Для этого необходимо в начало модуля вставить оператор option Explicit (Явное объявление).

Для автоматического добавления во все модули данного оператора в окне про граммы Visual Basic выполните команду Options (Параметры) меню Tools (Сервис). Откроется диалоговое окно Options, на вкладке Editor (рис. 5.1) которого установите флажок Require Variable Declaration.

Диалоговое окно Options

Если вы не разместили в модуле оператор Option Explicit, можете использовать неявное объявление переменной. В этом случае тип переменной определяется при первом операторе присвоения, и в этот же момент переменной будет выделена память. Если вы не используете специальные концевые символы, определяющие тип переменной, ей будет присвоен тип variant.

Область действия переменных

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

В Visual Basic можно применять глобальные и локальные переменные. Глобальные переменные доступны из любой части программы. Для локальных переменных можно задавать область действия в рамках всего модуля или отдельной процедуры.

Присваивая имена переменным с учетом области ее действия, придерживайтесь следующего формата:
Область действия переменной Префикс Пример Глобальная g gdtmFinish Локальная внутри модуля m msngLength Локальная внутри процедуры нет префикса strLastname Для создания переменной, которую вы хотите определить в качестве глобальной, в раздел General Declarations главного модуля приложения поместите оператор public. Например:
Public gdtmFinish As Date

Для объявления переменной, локальной внутри модуля или формы, используйте оператор private или Dim в разделе General Declarations модуля или формы (рис. 5.2). В этом случае объявленная переменная будет доступна для всех входящих в форму или модуль процедур, но в то же время недоступной в процедурах других модулей и форм.Ниже дан пример объявления переменных, локальных на уровне модуля

Переменные, локальные на уровне процедуры, создаются операторами Dim или static внутри процедуры. Например:
Sub CalcTotal
Dim bSuccess As Boolean
. . .
End Sub

Присвоение значения переменной

Прежде чем использовать переменную в программе, ей необходимо присвоить значение. Самый простой способ присвоения заключается в использовании оператора присвоения "=", который имеет следующий синтаксис:
переменная = выражение

Аргумент переменная задает имя переменной, которой будет присвоено значение выражения, стоящего справа от знака равенства. Например:
sngFirst = 10
strLastname = "Иванов"

Справа от знака равенства может стоять не только константа, но и более сложное выражение. Например:
sngResult = sngFirst + 255
strName = "Иванов" & ": " & strTeam

Особенности использования переменных типа Variant

Переменную типа variant можно использовать для хранения всех типов данных и выполнять операции, не заботясь о типе данных, в них содержащихся. Необходимо только помнить о двух исключениях. Во-первых, выполнять арифметические операции или функции над переменной типа variant можно только в том случае, если она содержит числовое значение. Во-вторых, конкатенацию строк следует осуществлять с помощью оператора "&" вместо оператора "+".

Переменные типа variant могут содержать специальные значения Empty, Null или Error

Значение Empty
До присвоения значения переменной типа variant ее значение отлично от О, пустой строки или значения Null и именуется Empty. Для определения значения Empty можно использовать функцию isEmpty:
If IsEmpty(x) Then x = 0
Замечание
Переменная типа variant имеет значение Empty только до первого присвоения ей какого-либо значения.

Значение Null
Переменная типа variant может иметь значение Null, используемое для указания пустых данных в приложениях, работающих с базами данных.
С помощью функции isNull можно проверить, имеет ли переменная типа variant значение Null:
If IsNull(x) Then
у = Null
Else
у = 0
End If

Для присвоения переменной типа variant значения Null можно использовать ключевое слово Null:
у = Null
Предупреждение
Присвоение значения Null переменной, не имеющей типа variant, приведет к ошибке.

При работе с переменной типа variant, имеющей значение Null, необходимо иметь в виду следующее:
если в выражении содержится переменная, имеющая значение Null, то само выражение принимает значение Null;
при использовании в качестве параметра функции переменной, имеющей значение Null, большинство функций возвращает значение Null.

Значение Error
Переменная типа variant может принимать значение Error при возникновении ошибки в процедуре. Однако в этом случае на уровне приложения ошибка не обрабатывается, что позволяет программисту в зависимости от ее значения предпринимать определенные действия.

Внутреннее представление значений
Переменная типа variant поддерживает внутреннее представление хранящихся в ней данных. При присвоении значения переменной типа variant Visual Basic применяет наиболее компактное представление этого значения. Например, если переменной типа variant присвоено небольшое числовое значение без дробной части, то используется представление integer, если хранится дробное число — используется внутреннее представление Double.

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *