Виды переменных
Для чего вообще придумали какое-то описание переменных вы задумывались? Не всё так просто как кажется. Переменная в определённой программе выполняет свою роль. Это сделано для того, что бы мы сразу могли указать программе каким образом необходимо "думать". Если у нас переменная содержит какую-то дату, то мы можем это описать, и наш компьютер не будет ломать свою "голову" и думать к какому типу отнести эту переменную и с чем её есть. Если наша переменная - некоторое число, то мы можем сразу указать нашей программе, что сейчас эта переменная некоторое число, а не дата.
Многие наверно уже поняли, что от того как мы опишем переменную в нашей программе, будет зависеть скорость её выполнения. Если у нас переменные не описаны, то программа будет подбирать необходимое свойство для наших переменных вручную. А если мы укажем, что переменная известна (её тип), то программа сразу начнёт её выполнять.
Теперь посмотрим как можно описать переменную, один из примеров показан ниже:
Dim R As Byte
Dim - это оператор
R - это переменная
As - это часть нашего синтаксиса
Byte - это тип данных, который и описывает нашу переменную.
Где же описывают эти переменные? Желательно описать переменные в начале вашего кода (программы), т.е. так:
Sub Programms()
Dim Ghd As Byte
Dim Ia As Long
Dim Rd As Integer
Dim Rx As Byte
дальше идёт код вашей программы...
Посмотрим какие есть переменные и какие значения возможно присвоить этим переменным.
Тип |
Название типа |
Значение |
Boolean |
Логический |
True, False |
Byte |
Байтовый |
0... 255 |
Integer |
Целое |
-32768... +32767 |
Long |
Длинное целое |
-2147483648... +2147483647 |
Single |
Число с плавающей точкой |
для отрицательных значений: |
Double |
Число с плавающей точкой двойной точности |
для отрицательных значений: |
Currency |
Денежный |
Десятичные числа с фиксированной позицией запятой. Возможны 15 цифр до запятой и 4 после. |
String |
Строковый |
Хранение текста длиной до 2 млрд. символов. |
Date |
Дата |
Даты изменяются в диапазоне от 1.01.100г. до 31.12.9999г. |
Object |
Объект |
Ссылка на объект (указатель) |
Variant |
Вариант |
Универсальный тип, значением которого могут быть данные любого из перечисленных выше типов, объекты, значения NULL и значения ошибок ERROR. |
Одним оператором Dim можно описать произвольное число переменных, но конструкция Аs должна быть указана для каждой из них, иначе переменным без Аs будет присвоен тип Variant.
Например:
Dim A As Byte, B As Integer, C, D As String
A - это переменная байтового типа
B - это переменная целого типа
C - это переменная типа вариант (так как не описана)
D - это переменная строкового типа
После всего этого может возникнуть вопрос, а возможно ли объявить переменную в начале всего документа чтобы потом её не объявлять? Ответ - можно. Называется это глобальная переменная, которая объявляется в начале вашего модуля, и после этого идут наши процедуры. Записывается она следующим образом:
Public A As Byte
А в нашей программе это будет выглядеть так:
Public A As Byte
Public B As Integer
Public C As Integer
Sub Primer()
Dim Ghd As Byte
Dim Ia As Long
Dim Rd As Integer
Dim Rx As Byte
..............
End sub
Sub Primer1()
Dim d As Byte
Dim f As Long
Dim g As Integer
Dim k As Byte
..............
End sub
Это нас радует, потому что не надо теперь в каждой процедуре объявлять одну и ту же переменную. Но вот не задача, данные нашей переменной живут только пока выполняется наш макрос. Как только процедура заканчивается, наша переменная сбрасывается.
Но и на это есть способ сохранить данные в переменной. Это называется статическая переменная. И описывается она следующим образом:
Static A As Byte
Но к сожалению объявлять её можно только на уровне процедуры. И в нашей программе это будет выглядеть так:
Sub Primer()
Dim A As Byte
Dim B As Long
Static C As Integer
A = 1
B = 2
C = A + B + C
End Sub
Если запустить данный макрос, то C в первоначальный момент будет равно 0, после завершения процедуры переменная C будет равняться 3. Если запустиь данный макрос ещё раз, то начальное значение переменной C будет равно уже 3, а в конце процедуры 6. Если так и выполнять наш макрос, то значение C будет повышаться каждый раз на 3, так как A + B = 3.
Возможно кто-то задумался, а можно ли сразу задать нашей переменной некоторое значение? И это можно, но только называется это уже не переменная, а константа, которая описывается так:
Const ИМЯConst = ...
или
Const A As Integer = 2323
При этом описывать её как переменную не следует. Наш код будет выглядеть, например, так:
Const AConst = 10
Sub Primer()
Dim C As Long
Dim B As Integer
B = 2
C = AConst + B
End Sub
или
Const A As Integer = 10
Sub Primer()
Dim C As Long
Dim B As Integer
B = 2
C = AConst + B
End Sub
Существует ещё такой тип описания переменной:
Private A As Integer
Но данное объявление переменной, видимо только в своём модуле.
Private A As Byte
Sub Primer()
Dim B As Integer
B = 2
A = A + B
End Sub
< < Предыдущая глава | Следующая глава > > |