Четверг, 11.28.2024, 2:01 AM
Приветствую Вас Гость | RSS

Электронный учебник по VBA MS Excel 2010

Описание переменных

Виды переменных

Для чего вообще придумали какое-то описание переменных вы задумывались? Не всё так просто как кажется. Переменная в определённой программе выполняет свою роль. Это сделано для того, что бы мы сразу могли указать программе каким образом необходимо "думать". Если у нас переменная содержит какую-то дату, то мы можем это описать, и наш компьютер не будет ломать свою "голову" и думать к какому типу отнести эту переменную и с чем её есть. Если наша переменная - некоторое число, то мы можем сразу указать нашей программе, что сейчас эта переменная некоторое число, а не дата.

Многие наверно уже поняли, что от того как мы опишем переменную в нашей программе, будет зависеть скорость её выполнения. Если у нас переменные не описаны, то программа будет подбирать необходимое свойство для наших переменных вручную. А если мы укажем, что переменная известна (её тип), то программа сразу начнёт её выполнять.

Теперь посмотрим как можно описать переменную, один из примеров показан ниже:

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

Число с плавающей точкой

для отрицательных значений:
-3,402823*1038...-1,401298*10-45
для положительных значений:
1,401298*10-45...3,402823*1038

Double

Число с плавающей точкой двойной точности

для отрицательных значений:
-1,79769313486232*10308...-4,94065645841247-324
для положительных значений:
4,94065645841247*10-324...1,79769313486232*10308

Currency

Денежный

Десятичные числа с фиксированной позицией запятой. Возможны 15 цифр до запятой и 4 после.
от -922337203685477,5808
до 922337203685477,5807

String

Строковый

Хранение текста длиной до 2 млрд. символов.
Есть два вида строк: строки фиксированной длины (до 216 символов) и строки переменной длины (до 231 символов). Данные записываются в кавычках.

Date

Дата

Даты изменяются в диапазоне от 1.01.100г. до 31.12.9999г.
Время от 00:00:00 до 23:59:59

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 
< < Предыдущая глава Следующая глава > >
Поиск

Динара Илькаева © 2024
Бесплатный конструктор сайтов - uCoz