Главная страница

Практикум по Visual Basic for Applications. 3 Глава Алгоритмы и программы Понятие алгоритма


Скачать 1.74 Mb.
НазваниеПрактикум по Visual Basic for Applications. 3 Глава Алгоритмы и программы Понятие алгоритма
АнкорVBA.pdf
Дата23.09.2017
Размер1.74 Mb.
Формат файлаpdf
Имя файлаVBA.pdf
ТипПрактикум
#8936
страница7 из 8
1   2   3   4   5   6   7   8
Глава 4. Справочник по языку программирования
Visual Basic For Application
В справочник включен минимум сведений для составления программ на
VBA по предложенному курсу. При составлении справочника использованы следующие обозначения: выражения в [] являются необязательными, знак | оз- начает альтернативный выбор конструкций, например, { k1 | k2 } – используем либо инструкцию k1, либо k2.
4.1. Описание переменных и основные типы данных
Переменные в программах VBA должны быть описаны. Описание пере- менной включает объявление ее имени и типа. Имя переменной – набор букв и символов, начинающихся с буквы. В качестве символов могут быть использо-

82 ваны цифры, подчеркивания. Нельзя использовать имена, совпадающие с клю- чевыми словами VBA и именами встроенных функций. Регистр не имеет значе- ния. Базовые типы переменных VBA приведены в табл.1.
Таблица 1
Тип
данных
Занимаемый
объем памя-
ти (байт)
Допустимые значения
Описание
Byte
1
От 1 до 255
Байт
Boolean
2
True (Истина) или False
(Ложь)
Логический
Integer
2
От –32768 до 32768
Целое
Long
4
От –2147483648 до –
2147483648
Длинное целое
Single
4
По абсолютной величине от
1,4Е-45 до 3,4Е+38
Число с пла- вающей точкой
Date
8
От 1 января 100 г. до 31 де- кабря 9999г.
Дата
Double
8
По абсолютной величине от
4,9Е-324 до 1,7Е+308
Число с пла- вающей точкой двойной точно- сти
String ()
10+длина стро- ки
От 0 до 2
10 9
Строка пере- менной длины
String
Длина строки
От 0 до 65400
Строка посто- янной длины
Variant
16
Любое значение вплоть до границ диапазона Double
Числовые под- типы
Variant
22+ длина строки
От 0 до 2
10 9
Строковые под- типы
Переменную в VBA можно описать с помощью следующей конструк- ции:
Dim Имя_Переменной As Тип_Переменной
Например, возможны следующие описания переменных:
Dim A As Integer
Dim C,D As Integer, E As Single
Часто при написании программ необходимо использовать одни и те же постоянные значения: числа, строки, даты и т.д. В этом случае вместо них лучше использовать имена, которые обозначают эти значения. В VBA можно задать константу с помощью одной из следующих конструкций:
Const Имя_константы = Выражение
Const Имя_константы As Тип_Постоянной = Выражение
Примеры возможного определения констант:
Const FileName = ''test.xls''

83
Const PI As Double = 3.14159
Константам нельзя присваивать новых значений, т.е. имя константы не должно встречаться в левых частях операторов присваивания.
Для описания переменных-массивов можно использовать несколько способов, например:
Dim B(3, 3) As Single
Dim A(12) As Integer
Первая строка объявляет двухмерный массив 3
3 (двумерный массив), состоящий из действительных чисел. Вторая строка объявляет одномерный массив (вектор), состоящий из 12 целых чисел, причем по умолчанию первый элемент массива будет А(0), а последний – А(11). В этом случае говорят, что 0 – базовый индекс. Можно изменить базовый индекс, написав в начале листа модуля оператор Option Base 1. После этого индексы массивов А и
В будут начинаться с единицы. Другим способом изменения базового индек- са является использование ключевого слова To при объявлении массива, на- пример
Dim B(1 To 3,1 To 3) As Single
Dim A(1 To 12) As Integer
Удобным способом определения одномерных массивов является функ- ция Аrrау, преобразующая список элементов, разделенных запятыми, в век- тор из этих значений, и присваивающая их переменной типа Variant.
Dim A As Variant
А= Аrrау (10,20,30)
Комментарий – фрагменты поясняющего текста, не являются операто- рами программы и игнорируются компилятором. Начало комментария – сим- вол апострофа ('). Комментарием считается любой текст от этого символа до конца строки.
4.2. Отладка программ
После того, как написан код программы, необходимо провести компиля- цию. Это можно сделать с меню Debug, Compile VBAProject. При этом мо- гут возникнуть ошибки компиляции в случае, если VBA не может интерпре- тировать введенный код, например, при некорректном вводе числа скобок, неправильном имени, неполном вводе инструкции и т.д. Некоторые из этих ошибок обнаруживаются Visual Basic при завершении набора строки с инст- рукцией в редакторе кода и нажатием клавишу . Строка, в которой содержится ошибка, выделяется красным цветом, и на экране отображается диалоговое окно о возможной причине, вызвавшей ошибку.
Другие ошибки компиляции обнаруживаются перед выполнением про- граммы. Отметим, что VBA каждый раз автоматически компилирует про- грамму при ее запуске на выполнение. В этом случае предполагаемое место-

84
положение ошибки выделяется синим цветом, и на экране отображается диа- логовое окно Microsoft Visual Basic с сообщением о возможной причине, вы- звавшей ошибку.
Ошибки выполнения возникают после успешной компиляции програм- мы при ее выполнении. Причинами таких ошибок могут быть некорректные данные, введенные пользователем, например, требуется число, а пользова- тель вводит строковую информацию.
Если в диалоговом окне Microsoft Visual Basic нажать кнопку Debug, то в строке модуля желтым цветом будет выделена строка, вызвавшая ошибку, и на выполнение которой действие программы было прервано. Visual Basic перейдет в режим прерывания. Кроме режима прерывания, приложение мо- жет находится в режиме разработки и режиме выполнения. Переключение между режимами работы удобно производить при помощи трех кнопок пане- ли инструментов Standart.
Кнопка
Название
Описание
Start
Доступна в режиме конструирования. Переключает в режим выполнения В режиме прерывания она также доступна, но играет роль кнопки Continue.
Break
Доступна в режиме выполнения. Переключает в ре- жим прерывания.
End
Доступна в режиме выполнения. Переключает в ре- жим разработки.
Наиболее коварными являются логические ошибки (когда программа рабо- тает, но выдает неверные результаты). В этом случае очень полезными являют- ся средства отладки, которые позволяют лучше понять, что действительно про- исходит в программе, проследить за ее работой шаг за шагом. Для проверки по- следовательности выполнения операторов в программе необходимо поместить курсор в процедуру, которую необходимо отладить, и осуществить одно из пе- речисленных ниже действий:

Выбрать команду Выполнить, Выполнить пошагово (Run, Step Into)

Нажать клавишу
4.3. Операции VBA

Математические операции, выполняются над числами и их результатом явля- ются числа:
Операции
Описание
[Операнд1] + [Операнд2]
Сложение
[Операнд1]
 [Операнд2]
Вычитание
 [Операнд]
Перемена знака
[Операнд1] * [Операнд2]
Умножение
[Операнд1] / [Операнд2]
Деление

85
[Операнд1] Mod [Операнд2]
Остаток от деления по модулю
[Операнд1] ^ [Операнд2]
Возведение в степень

Отношения, применяются не только к числам и их результатом являются ло- гические значения, например x>y:
Операции
Описание
[Операнд1] < [Операнд2]
Меньше
[Операнд1] > [Операнд2]
Больше
[Операнд1] <= [Операнд2]
Меньше или равно
[Операнд1] >= [Операнд2]
Больше или равно
[Операнд1] <> [Операнд2]
Не равно
[Операнд1] = [Операнд2]
Равно

Логические операции, применяются к логическим выражениям (значениям) и их результатом являются логические значения, например Not x and y.
[Операнд1] And [Операнд2]
Логическое умножение
[Операнд1] Or [Операнд2]
Логическое сложение
Not [Операнд]
Логическое отрицание
[Операнд1] Imp [Операнд2]
Логическая импликация
VBA выполняет операции в соответствии с их приоритетами. Приоритеты операций (по убыванию):
1. Вызов функции и скобки
2. ^
3. – (унарный минус)
4. * , /
5.Mod
6. + ,

7. >, <, >=, <=, <>, =
8.Not
9.And
10.Or
11. Imp
4.4. Встроенные функции VBA
Математические:
Функция
Возвращаемое значение
Abs(Число) Модуль числа
Atn(Число) Арктангенс
Cos(Число) Косинус
Exp(Число) Экспонента
log(Число) Натуральный логарифм
Sin(Число) Синус
Sqr(Число) Квадратный корень из числа

86
Tan(Число) Тангенс
Sgn(Число) Знак числа
Fix(Число)
Отбрасывают дробную часть числа и возвращают целую, для по- ложительных одинаковы; различие в отрицательном Числе
Int(Число)
Функции обработки строк:
Функция Возвращаемое выражение
Asc
Возвращает ASCII-код начальной буквы строки.
Синтаксис: Asc(Строка)
Chr
Преобразует ASCII-код в строку.
Синтаксис: Chr(Код)
Например: Chr(13) –переход на новую строку, Chr(97)= ''a''
Left
Возвращает подстроку, состоящую из заданного числа первых сим- волов исходной строки.
Синтаксис: Left(string, length)
 Length – число символов,
 String – исходная строка.
Right
Возвращает строку, состоящую из заданного числа последних сим- волов исходной строки.
Синтаксис: Right(string, length)
 Length – число символов,
 String – исходная строка.
Mid
Возвращает подстроку строки, содержащую указанное число сим- волов исходной строки..
Синтаксис: Mid(string, start[, length])
 Length – число возвращаемых символов подстроки,
 String – исходная строка,
 Start – позиция символа в строке string, с которого начинается нужная подстрока.
Len
Возвращает число символов строки.
Синтаксис: len(Строка)
String Возвращает строку, состоящую из указанного числа повторений од- ного и того же символа.
Синтаксис: String(number, character)
StrComp Возвращает результат сравнения двух строк.
Синтаксис: StrComp(string1,string2 [, compare])
 String1, string2 –два любых строковых выражения
 Compare – указывает способ сравнения строк.( 0 – двоичное сравнение и 1-посимвольное без учета регистра)
InStr
Возвращает позицию первого вхождения одной строки внутри дру- гой строки.
Синтаксис: InStr([start, ] string1, string2[, com­
pare])
 Stsrt-числовое выражение, задающее позицию, с которой на-

87
чинается каждый поиск. Если этот аргумент опущен, поиск начинается с первого символа строки
 String1 – строковое выражение, в котором выполняется поиск
 String2 – искомое строковое выражение
 Compare – указывает способ сравнения строк.
Функции проверки типов:
Функция
Проверка
IsArray(переменная)
Является ли переменная массивом
IsDate(переменная)
Является ли переменная датой
IsEmpty(переменная)
Была ли переменная описана инструкцией Dim
IsNull(переменная)
Является ли переменная пустым значением
IsNumeric(переменная) Является ли переменная числовым значением
IsObject(переменная) Является ли переменная объектом
Функции преобразования типов
Преобразование строки в число и обратно осуществляется следующими функ- циями:
Val (строка) Возвращает числа, содержащиеся в строке, как числовое значение соответствующего типа
Str (число)
Возвращает значение типа Variant (String), являющееся строковым представлением числа
Другие функции преобразования типов из данного в указанный:
Функция
Тип, в который преобразуется значение
аргумента
CBool (Выражение)
Boolean
CByte (Выражение)
Byte
CCur (Выражение)
Currency
CDate (Выражение)
Date
CDouble (Выражение)
Double
CDec (Выражение)
Decimal
CInt (Выражение)
Integer
CLng (Выражение)
Long
CSng (Выражение)
Single
CVar (Выражение)
Variant
CStr (Выражение)
String
4.5. Операторы VBA
Последовательность операторов. Операторы последовательности отде- ляются друг от друга либо двоеточием, либо признаком конца строки (т.е. каж- дый оператор начинается с новой строки). Использование знака двоеточия по- зволяет разместить несколько операторов на одной строке. Например,

88
a = b: c = d: If a > d Then d = a
Можно также осуществлять перенос строки, используя символы (Про- бел)+(Знак подчеркивания) в конце строки.
Оператор присваивания. Оператор присваивает значение выражения переменной, константе или свойству объекта.
Синтаксис:
Переменная = Выражение или
Const Константа = Значение
Условный оператор If...Then...Else..End If (выбор одной из двух вет-
вей).
Оператор условного перехода задает выполнение одной из двух групп инструк- ций в зависимости от истинности условия.
Синтаксис:
If Условие Then
Оператор_1
[Else
Оператор_2]
End If]
Для записи вложенных условных операторов может быть использована бо- лее простая конструкция:
If <Условие-1> Then
Операторы 1
ElseIf <Условие-2> Then
Операторы 2
[ElseIf <Условие-n> Then
[Операторы n]
[Else
[Операторы]
End If
Оператор множественного ветвления Select Case (выбор одной из
нескольких ветвей). Оператор выбора выполняет одну из нескольких групп инструкций, в зависимости от значения выражения, и затем выходит из этого оператора.
Синтаксис:
Select Case Выражение
Case Значение-1
Оператор_1

89
Case Значение-n
Оператор_n
[Case Else
Оператор_n+1]
End Select
Значение-i – это одно конкретное значение из множества значений или диапазон (интервал значений).
Сначала вычисляется значение выражения, стоящего после ключевых слов
Select Case. Затем выполняется проверка того, попадает ли Выражение в одно из Case-значений.
Например:
Число=Cells(1,2)
Select Case Число
Case 1
Cells(2,2)= ''Число равно 1''
Case 2, 3
Cells(2,2)= ''Число равно 2 или 3''
Case 4 To 6
Cells(2,2)= ''Число от 4 до 6''
Case Is >=7
Cells(2,2)= ''Число не менее 7''
End Select
Операторы циклов.
For...To…Next
Оператор For-Next повторяет выполнение группы инструкций, пока Счет- чик изменяется от Начала до Конца с указанным Шагом. Если Шаг не указан, то он полагается равным 1. Альтернативный выход из цикла предоставляется инструкции Exit For.
Синтаксис:
For Счетчик = Начало To Конец [Step Шаг]
Операторы
[Exit For]
Операторы
Next [Счетчик]
For…Each…Next
Повторяет выполнение инструкций для каждого элемента семейства или масси- ва. В качестве Семейства может выступать диапазон ячеек рабочего листа или семейство рабочих листов. В качестве элемента в последнем случае можно рассматривать рабочий лист.

90
Синтаксис:
For Each Элемент In Семейство
Операторы
[Exit For]
Операторы
Next [Элемент]
Например:
For Each Лист In WorkSheets
If Лист.Name= ''Результат'' Then
Sheets(''Результат'').Delete
End If
Next Лист
While-Wend
Оператор While-Wend выполняет последовательность инструкций, пока заданное условие имеет значение True.
Синтаксис:
While Условие
Операторы
Wend
Оператор While-Wend в отличие от For-Next работает не заданное число раз, а пока выполняется условие.
Do – Loop
Оператор Do–Loop повторяет выполнение набора инструкций, пока усло- вие имеет значение True (случай While) или пока оно не примет значение
True (случай Until).
Синтаксис:
Do {While | Until} Условие
Операторы
[Exit Do]
Операторы
Loop
или
Do
Операторы
[Exit Do]
Операторы
Loop {While | Until} Условие

91
В любом месте управляющей структуры Do–Loop может быть размещена любое число инструкций Exit Do, обеспечивающих досрочные возможности выхода из цикла Do–Loop.
Оператор безусловного перехода GoTo.
Синтаксис:
Goto Метка
Аргумент Метка может быть любым именем или номером строки, на которую осуществляется переход. Нельзя осуществлять переход из тела функции в вы- зывающую процедуру, переход из охватывающей программы внутрь тела цик- ла, внутрь тела условного оператора. Если используется оператор GoTo, то в программе должен быть единственный оператор, перед которым стоит эта мет- ка:
Синтаксис: Метка: Оператор
4.6. Модули, процедуры и функции
Программа на языке VBA является процедурой или функцией, и может состоять из одного или нескольких модулей.
Обычно текст модуля начинается с команд, которые управляют описанием пе- ременных, способом сравнения строк и т.д. Затем идет объявление глобальных переменных и констант, которые можно использовать во всех процедурах либо модуля, либо проекта. Далее располагается код процедур Sub и функций
Function, составляющих саму программу.
Процедура является самостоятельной частью кода, которая имеет имя и может содержать аргументы-параметры, выполнять последовательность инст- рукций и изменять значения своих аргументов.
Синтаксис:
[
1   2   3   4   5   6   7   8


написать администратору сайта