Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Встроенные типы данных VBA



Тип данных Размер в байтах Разрядность (цифр) Диапазон, пояснение
Boolean Byte Integer Long Single   Double Currency   Date String Object   Variant     1+L ≤ 3 ≤ 5 ≤ 10 ≤ 7   ≤ 15 ≤ 19     True, False - логические значения 0, 255 - целые положительные числа -32768, 32767 – целые числа -2147483648, 2147483647 – длинные целые -3.402823.1038, -1.401298.10-45– отрицательные числа 1.401298.10-45, 3.402823.1038 – положительные числа Действительные числа с двойной точностью Действительные числа с 4 знаками после десятичной точки. Используются для точных денежных расчетов 01.01.0100, 31.12.9999 - даты Строка из L символов; L≤ 65535 Объект – фактически, ссылка на него, т.е. адрес его размещения в оперативной памяти Может принимать любой тип данных, т.е. настройка на тип операнда происходит во время исполнения инструкций или процедур

Когда при разработке приложения возникает необходимость в переменной для хранения данных, ее описывают в модуле перед процедурами или в конкретной процедуре. В первом случае переменная будет доступна всем процедурам модуля (как контейнер общего пользования), а если в ее описании применено ключевое слово PUBLIC, то переменную смогут использовать даже процедуры других модулей. Такую переменную называют глобальной. В ней удобно размещать данные, требуемые многим процедурам. Переменная, описанная внутри процедуры, называется локальной – она используется только в этой процедуре, а в других могут быть переменные с таким же именем. Инструкция, содержащая описание переменной, имеет вид:

Dim ИмяПеременной As ТипДанных

Для определения глобальной переменной вместо Dim пишут Public. Пример описания переменных:

Pablic Nprof, X0 As Single, Y0 As Single

Dim I As Integer, J As Integer, Date1 As Date, Date2 As Date, ФИО As String*32

Nprf=40

При описании переменной ФИО, кроме ее имени и типа, указана длина в байтах. Длину назначают для строковых переменных. Если длину не задать, то будет считаться, что строка имеет переменную длину. Такой подход менее экономичен. Для переменной Nprof тип вообще не указан – по умолчанию ей будет назначен тип Variant – это удобно для программиста, но также не экономично: число в формате Variant занимает 16 байт, а строка – 22 байта плюс по 1 байту на каждый символ. Переменная Nprf вообще не определена – сразу используется в инструкции присваивания. Она также имеет тип Variant по умолчанию. Такой стиль “ввода в действие” переменных довольно опасен. Если Nprf – это опечатка, а надо было написать Nprof, то, возможно, что эту ошибку будет нелегко обнаружить. Поэтому VBA позволяет наложить требование на явное описание всех переменных в модуле. Для этого в описательную часть модуля (до процедур) надо включить инструкцию Option Explicit. Если теперь попытаться использовать в тексте процедур необъявленные переменные, VBA сразу обнаружит ошибки.

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

! # $ % & @

Иногда имена записывают так: Номер_строки или НомерСтроки. Применение полных имен особенно полезно для глобальных переменных, которые хранят параметры моделируемых объектов и явлений. В компактных процедурах удобнее пользоваться переменными, применяемыми в математике и физике, например: X – координата, M –число строк в матрице или таблице, i – номер очередной строки, N – число столбцов, j – номер текущего столбца, V – скорость, S – путь и т.п. При использовании кратких имен их поясняют в комментариях – см. текст процедуры Mrows в подразделе 10.3.

Кроме возможности явного задания типа переменной, VBA позволяет указать тип переменной неявно, добавив к ее имени символ-указатель:

$ - для типа данных String, например, ФИО$=”Иванов И.И.”;

% - для данных типа Integer, например, i%=1;

& - для данных типа Long, например, CX&=6510200;

! - для данных типа Single, например, x!=107.315;

# - для данных типа Double, например, Pi#=3.14159;

@ - для данных типа Currency, например, SS@=67920.1252

Такой подход вряд ли стоит рекомендовать, но иногда он может способствовать наглядности.

Наряду с переменными, для хранения данных во время работы приложения используются массивы переменных, или просто массивы. Массив описывается так же, как одиночная переменная, только после имени в скобках указывается еще размерность:

Dim V(1 to 200) As Single, T(1 to 200) As Single, i As Integer

Так можно описать массивы измеренных значений скорости и времени для примера в разделе 4. При вычислениях i-ый элемент массива указывают с помощью индекса:

S=S+(V(i)+ V(i+1))*0.5*(T(i+1)-T(i))

Так можно записать блок 2, изображенный на рис. 4.1.

Если при описании массива размерность задать одним числом, например, V(200), то будет считаться, что нумерация элементов массива начинается с 0 и оканчивается числом 200. Кроме одномерных массивов, используются многомерные. Предположим, что на листе Excel в первом столбце размещены идентификаторы строк, например, Y1,Y2,…,YI,…,YM, а в первой строке – идентификаторы столбцов: X1,X2,…,XJ,…,XN. На пересечении I-ой строки и J-го столбца находится элемент aIJ матрицы (Рис.10.5).

В этом примере матрица представляет собой таблицу коэффициентов, позволяющих связать любой YI уравнением со значениями X1,…,XN:

YI=aI1*X1+aI2*X2+…+aIJ*XJ+…+aIN*XN

Другими словами мы имеем матричную запись системы линейных уравнений. Пусть для последующей работы с матрицей требуется определить M, N, разместить идентификаторы YI (I=1,…,M) и XJ (J=1,…N) в массивах CY, CX, а элементы матрицы в двумерном массиве A(I,J).

Этот пример иллюстрирует часто встречающуюся ситуацию: в момент составления программы обычно не известно количество элементов массива – оно определяется программой во время исполнения. Если заранее можно оценить максимальную длину массива, то его часто резервируют с расчетом на максимальную размерность. Так, в нашем случае можно принять ограничение: разрабатываемая программа предназначается для работы с матрицами, у которых число строк и столбцов не превышает 40. Тогда инструкция для резервирования массивов будет иметь вид:

Dim CY(1 to 40), CX(1 to 40), A(1 to 40,1 to 40) As Double

Но Visual Basic предоставляет и другую возможность – динамического переопределения размерности массивов. Рассмотрим следующий модуль:

Option Explicit

Dim CY(), CX(), A() As Double

Dim I As Integer, J As Integer, M As Integer, N As Integer

Private Sub CommandButton1_Click()

MNTab 'Определение M, N - размерности матрицы

ReDim CY(1 To M)

ReDim CX(1 To N) 'Изменение размерности массивов

ReDim A(1 To M, 1 To N)

TabCXCY ' Копирование идентификаторов столбцов и строк в массивы CX, CY

TabA ' Копирование матрицы в массив A





Дата публикования: 2014-11-02; Прочитано: 692 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...