Тема 2. Описание и использование переменных, констант и массивов
Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Тема 2. Описание и использование переменных, констант и массивов





 

План

2.1. Описание и использование переменных

2.2. Описание и использование массивов

2.3. Описание и использование констант

2.4. Использование префиксов типов данных в именах переменных

 

 

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

 

VBA не требует явного описания переменных перед их использованием. Переменные, которые сразу используются в программе без предварительного описания, называются неявно описанными. Неявно описанным переменным присваивается тип данных Variant. Однако рекомендуется явно описывать все переменные, так как это способствует увеличению скорости выполнения программы и упрощает ее отладку. Для описания переменных в VBA используются операторы Dim, Public, Private и Static.

 

Синтаксис:

 

Dim | Public | Private | Static имя_переменной _

[([индексы])][As тип] [, ...]

 

Параметр имя_переменной – имя описываемой переменной. Необязательные скобки и параметр индексы используются для описания массивов. Дополнительный параметр As тип позволяет назначить переменной тип данных. Если необходимо явно задать тип, то это надо сделать для каждой переменной списка.

 

Область видимости и время жизни переменной определяется тем, где и как была описана переменная:

– Личная переменная уровня процедуры описывается с помощью инструкции Dim, размещенной в процедуре. Такая переменная сохраняет свое значение только при выполнении процедуры, а при повторном запуске процедуры ее необходимо инициализировать заново.

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

– Личная переменная уровня модуля описывается с помощью инструкции Dim или
Private, размещенной в разделе описаний модуля.



– Общая переменная, доступная во всех модулях проекта, описывается с помощью инструкции Public в разделе описаний модуля.

 

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

 

Пример:

 

Dim Value1 As String

Dim Value1 As String, Value2 As Integer

Dim Value1, Value2, Value3 As Integer

Описание и использование массивов

 

Описание массива производится с помощью тех же операторов и подчиняется тем же правилам, что и описание обычной переменной.

 

Пример:

 

Dim strNames(10) As String

 

данная инструкция описывает одномерный массив с именем strNames, состоящий из 11 элементов (с 0 по 10); допустимые данные: строки переменной длины типа String.

 

В VBA можно создавать и многомерные массивы.

Пример:

 

Dim intNames(9, 14) As Integer

 

данная инструкция описывает двумерный массив с именем intNames, состоящий из
150 элементов, расположенных в 10строках и 15 столбцах; допустимые данные: целые числа типа Integer.

 

Dim intNames(1 To 9, 1 To 14) As Integer

 

данная инструкция описывает двумерный массив с именем intNames, состоящий из
126 элементов, расположенных в 9строках и 14 столбцах; допустимые данные: целые числа типа Integer.

 

Для изменения используемой по умолчанию нижней границы индексов используется инструкция Option Base, которая размещается в разделе описаний модуля:

 

Синтаксис:

 

Option Base {0 | 1}

 

Пример:

 

Option Base 1

Dim strNames(10) As String

 

данная инструкция описывает одномерный массив с именем strNames, состоящий из 10 элементов (с 1 по 10); допустимые данные: строки переменной длины типа String.

 

Описание и использование констант

 

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

 

Синтаксис:

 

[Public | Private] Const имя_константы [As тип] = значение

 

При описании константы ей можно присвоить литерал, но нельзя присвоить значение переменной или значение, возвращаемое какой-либо функцией.

 

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

 

Пример:

 

Const intMaxCount As Integer = 30

Const blnFlagStart As Boolean = False

Const strMsgRus As String = “Введите значение параметра”

Const dtmStartFinYear As Date = #01/01/2005#

 

Использование префиксов типов данных в именах переменных

 

Префикс Тип данных Пример
bln Boolean blnFlagStart
byt Byte bytMaxCount
cur Currency curMaxCost
dbl Double dblMaxCount
dtm Date dtmStartFinYear
int Integer intMaxCount
lng Long lngMaxValue
obj Object objMainForm
str String strMsgVarning
sng Single sngMaxCount
vnt Single vntTempValue
g Глобальная переменная g_intMaxCount

 

 


Тема 3. Инструкции языка Visual Basic для приложений

 

План

3.1. Оператор присваивания

3.2. Условный оператор

3.3. Оператор выбора

3.4. Оператор цикла Do … Loop

3.5. Оператор цикла со счетчиком (For … Next)

3.6. Оператор цикла For Each … Next

3.7. Оператор With … End With

3.8 Оператор безусловного перехода

 

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

 

 

Оператор присваивания

 

Оператор присваивания используется для присваивания элементу данных языка (переменной, константе, элементу массива, свойству объекта) значения.

С использованием оператора присваивания описывается конструкция блок-схем, представленная на рис.1.

       
 
   
Рис.1
 

 


Оператору присваивания соответствует знак =(равно).

 

Синтаксис:

 

ИмяПеременной = Выражение

 

После выполнения оператора присваивания переменной с именем ИмяПеременной будет присвоено значение, полученное в результате вычисления выражения, стоящего справа от знака =(равно).

Тип данных переменной ИмяПеременной должен быть совместим с типом данных вычисленного выражения.

Допускается запись нескольких операторов в строке. В качестве разделителя операторов используется знак :(двоеточие).

 

Пример:

 

М = (А + В) / 2

М = (А + В) / 2 : С = К : D = 5

Условный оператор

 

Условный оператор выполняет определенные инструкции в зависимости от значения условия и может быть использован для описания конструкций блок-схем представленных на рис.2.

 

           
 
   
а) Обход
 
 
 
   
б) Ветвление
 

 

 

           
 
   
в) Множественное ветвление
 
 
   
Рис.2

 

 


Условный оператор имеет две формы синтаксиса: строчную и блочную.

 

Синтаксис строчной формы:

 

If <условие> Then <инструкции 1> [Else <инструкции 2>]

Условие представляет собой логическое выражение или набор логических выражений объединенных логическими операциями.

При возвращении условием значения True, выполняются инструкции, следующие за ключевым словом Then, а при возвращении условием значения False, выполняются инструкции, следующие за ключевым словом Else.

 

Примеры:

 

If A>B Then P=A : A=B : B=P

If A>B And R=0 Then C=A+B : К=1 Else C=A*B : К=2

If A>B Then C=A+B Else If A<B Then C=A*B Else C=0

 

Синтаксис блочной формы:

 

If <условие_1> Then

[инструкции_1]

Направление проверки условий
[ElseIf <условие_2> Then

[инструкции_2]]

...

 

[ElseIf <условие_N> Then

[инструкции_N]]

[Else

[инструкции_else]]

End If

 
 

 


При возвращении условием_1 значения True, выполняются операторы, расположенные в нижеследующих строках, после чего управление передается в строку, следующую за ключевым словом End If, а при возвращении условием_1 значения False управление передается в строку, содержащую условие_2. Выполнение последующих проверок осуществляется аналогично. Если ни одно из условий не равно True, то выполняются операторы, расположенные в строках после ключевого слова Else, либо, если ключевое слово Else отсутствует, то управление передается в строку, следующую за ключевым словом
End If.

 

Примеры:

 

' Пример 1 – это комментарий

If A > B Then

P = A

A = B

B = P

End If

' Пример 2

If K = 1 Then

C = A + B

ElseIf K = 2 Then

C = A - B

ElseIf K = 3 Then

C = A * B

Else

C = 0

End If

Оператор выбора

 

Оператор выбора, подобно оператору If … Then … Else, используется для выполнения тех или иных инструкций в зависимости от значения условия.

 

Синтаксис:

 

Select Case переменная

Case список_значений_1

[инструкции_1]

[Case список_значений_2

[инструкции_2]]

...

 

[Case список_значений_n

[инструкции_n]]

[Case Else

[инструкции_else]]

End Select

 

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

 

Величины для сравнения, входящие в ­список_значений, могут быть заданы в виде:

– списка значений, перечисленных через запятую;

– диапазона значений в виде начальное_значение To конечное_значение;

– выражения сравнения в виде Is оператор_сравнения значение.

 

В инструкции может быть произвольное число блоков Case. Если ни одно из условий не является истинным, то выполняются инструкции блока Case Else.

 

 

Пример:

 

Select Case K

Case 1

C = A + B

Case 2

C = A - B

Case 3

C = A * B

Case Else

C = 0

End Select

 

 

3.4. Оператор цикла Do … Loop

 

Оператор цикла организует выполнение одних и тех же инструкций (тела цикла) до тех пор пока выполняется (или, наоборот, не выполняется) какое-то условие.

Оператор Do … Loop может быть использован для описания конструкций блок-схем представленных на рис.3.

 

             
   
     
а) Цикл с предусловием
 
 
 
   
б) Цикл с постусловием
 

 

 


Рис. 3

 

 

Оператор Do … Loop имеет две формы организации цикла: с предусловием и с постусловием.

 

Синтаксис оператора DoLoop с предусловием:

 

Do [While | Until условие]

[инструкции]

[Exit Do]

[инструкции]

Loop

 

Оператор Do … Loop с предусловием организует проверку условия перед каждым входом в цикл и выполнение инструкций, входящих в тело цикла до тех пор, пока условие истинно, если оно записано после ключевого слова While, или ложно, если оно записано после ключевого слова Until.

 

Оператор Exit Do завершает выполнение цикла и передает управление оператору, следующему за инструкцией Loop.

 

Синтаксис оператора DoLoop с постусловием:

 

Do

[инструкции]

[Exit Do]

[инструкции]

Loop [While | Until условие]

 

Оператор Do … Loop с постусловием организует проверку условия после каждого выполнения тела цикла. Если условие, записанное после ключевого слова While, истинно, или условие, записанное после ключевого слова Until, ложно, то управление передается на первый оператор тела цикла, иначе выполняется оператор, следующий за инструкцией Loop.

 

Примеры:

 

' Пример - 1

' цикл с предусловием

' будет выполняться до тех пор пока Х < 5

x = 0

 

Do While x < 5

x = x + 1

Loop

 

' Пример - 2

' цикл с предусловием

' будет выполняться до тех пор пока Х не станет равным 5

x = 0

 

Do Until x = 5

x = x + 1

Loop

 

' Пример - 3

' цикл без условия

' выход из тела цикла при Х равном 5

x = 0

Do

if x = 5 then Exit Do

x = x + 1

Loop

 

 


3.5. Оператор цикла со счетчиком For … Next

 

Оператор For … Next позволяет циклически выполнить набор утверждений заданное количество раз.

 

Синтаксис:

 

For счетчик = нач_значение To конеч_значение [Step шаг]

[инструкции]

[Exit For]

[инструкции]

Next [счетчик]

 

Параметр счетчик – это числовая переменная, автоматически изменяющая свое значение на величину шаг после каждого повтора цикла. Цикл выполняется до тех пор, пока счетчик £ конеч _значение при положительном значении параметра шаг или до тех пор, пока счетчик ³ конеч_значение при отрицательном значении параметра шаг. Если параметр Step шаг опущен, то по умолчанию приращение переменной-счетчика полагается равным 1.

 

Оператор Exit For завершает выполнение цикла и передает управление оператору, следующему за ключевым словом Next.

 

Примеры:

 

' заполнение значениями элементов одномерного массива A размером N

n = 5

For i = 1 To n

A(i) = i ^ 2

Next i

 

' заполнение значениями элементов двумерного массива A размером N x M

n = 5 : m = 4

For i = 1 To n

For j = 1 To m

A(i, j) = i + j

Next j

Next i

 

 

3.6. Оператор цикла For Each … Next

 

Цикл For Each … Next позволяет повторить выполнение группы инструкций для каждого элемента массива или семейства.

 

Синтаксис:

 

For Each элемент In группа

[инструкции]

[Exit For]

[инструкции]

Next [элемент]

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

 

Перечисленные выше операторы If … End If, Select … Case, Do … Loop, For … Next, For Each … Next представляют собой группу управляющих инструкций, которые изменяют порядок выполнения команд. Управляющие инструкции могут быть вложены друг в друга в любой последовательности.

 

3.7. Оператор With … End With

 

Большинство действий в VBA производится с использованием свойств и методов объектов, которые при написании отделяются от имени объекта точкой. При многократном обращении к одному и тому же объекту первая часть утверждений будет, таким образом, повторяться, что затрудняет восприятие текста программы. Для упрощения ссылок на свойства и методы объектов используется инструкция With … End With.

 

Синтаксис:

 

With объект

[инструкции]

End With

 

Параметр объект – это имя требуемого объекта. Любые инструкции внутри блока With … End With, в которых используются данный объект, могут содержать название его свойства или метода без имени, начиная с точки.

 

 









Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2018 zdamsam.ru Размещенные материалы защищены законодательством РФ.