Функции и подпрограммы
Чтобы создать функцию с именем My Function, принимающую целочисленный и строковый аргументы и возвращающую значение с плавающей точкой двойной точности, введите: Инструкция Do… Loop используется для определения блока инструкций, выполнение которого будет повторяться до тех пор, пока заданное условие является истинным. Инструкция With позволяет выполнить последовательность инструкций, не повторяя… Читать ещё >
Функции и подпрограммы (реферат, курсовая, диплом, контрольная)
В Visual Basic для приложений имеются два типа процедур — функции (процедуры Function) и подпрограммы (процедуры Sub). На языке VBA процедура — это самостоятельная замкнутая программная единица, включающая операторов описания локальных данных процедуры и операторов, которые выполняются в ней.
Процедуры обоих типов могут иметь аргументы — переменные, с помощью которых вы передаете значения, определяющие работу процедуры при конкретном вызове. Функция может возвратить единственное значение, а подпрограмма значений не возвращает. Кроме того, функции можно выполнять из любого места Microsoft Access, в том числе из выражений в запросах и из макросов. Подпрограмму можно выполнить только при вызове ее из функции, из другой подпрограммы или как процедуру обработки события в форме или отчете.
Инструкция Function
Инструкция Function используется для объявления новой функции, описания ее аргументов, типа возвращаемого значения и исходного текста программы функции.
Синтаксис:
[Public I Private] [Static] Function имя-функции —^ ([]) [As тип-данных]
[]
[имя-функции = ]
[Exit Function].
[]
[имя-функции = ] End Function
где — это.
{ [Optional] [ByVal I ByRef] [ParamArray] имя-аргумента —^ [As тип-данных} ],.. .
Пример:
Чтобы создать функцию с именем My Function, принимающую целочисленный и строковый аргументы и возвращающую значение с плавающей точкой двойной точности, введите:
Function MyFunction (intArg! As Integer, strArg2 As String) As Double.
End Function.
Инструкция Sub
Инструкция Sub используется для объявления новой подпрограммы, описания ее аргументов и исходного текста процедуры.
Синтаксис:
[Public | Private] [Static] Sub имя-подпрограммы —".
([]) [As тип-данных].
[ ].
[Exit Sub].
[ ] End Sub
где — это.
{ [Optional] [ByVal | ByRef] [ParamArray] имя-аргумента —а. [As тип-данных} }, .. .
Пример:
Чтобы создать подпрограмму с именем MySub, которая принимает два строковых аргумента, но может изменять только второй аргумент, введите:
Sub MySub (ByVal strArg! As String, strArg2 As _ String).
End Sub.
Управление выполнением программы
VBA предоставляет целый ряд способов управления ходом выполнения инструкций в процедурах. Вы можете вызывать другие процедуры, организовывать циклическое выполнение блока инструкций заданное число раз или до тех пор, пока некоторое условие остается истинным. Вы можете также передать управление конкретной инструкции процедуры или в любой момент времени выйти из нее. В следующих разделах рассматриваются некоторые (но не все) возможности управления ходом выполнения инструкций в процедурах VBA.
Инструкция Call
Инструкция Call используется для передачи управления процедуре Sub.
Синтаксис:
Call имя-подпрограммы [()] или.
имя-подпрограммы [] где — это.
{ [ByVal | ByRef] },.. .
Примеры:
Чтобы вызвать подпрограмму с именем MySub и передать ей целую переменную и выражение, введите:
Call MySub (intMyInteger, curPrice * intQty) Другой синтаксически правильный способ вызова — MySub intMyInteger, curPrice * intQty.
Инструкция Do… Loop
Инструкция Do… Loop используется для определения блока инструкций, выполнение которого будет повторяться до тех пор, пока заданное условие является истинным.
Синтаксис:
Do [{While Until} ]
[]
[Exit Do].
[] Loop или.
Do
[] [Exit Do].
[] Loop [{While I Until} ]
Пояснения:
Пример:
Чтобы прочитать все строки таблицы tbICIubs, пока не будет достигнут конец набора записей, введите:
Dim dbEntSched As Database.
Dim rcdClubs As RecordSet.
Set dbEntSched = CurrentDbO.
Set rcdClubs = dbEntSched. OpenRecordSet («tbICIubs»).
Do Until rcdClubs.EOF.
rcdClubs.MoveNext Loop.
Инструкция For… Next
Инструкция For… Next позволяет выполнить последовательность инструкции определенное число раз.
Синтаксис:
For счетчик = начальное-значение То конеуное-знауение[81ер шаг]
[]
[Exit For].
[] Next [счетчик]
Пример:
Чтобы в окне отладки вывести имена первых пяти запросов в базе данныз Entertainment Schedule, введите:
Dim dbEntSched As Database Dim inti As Integer Set dbEntSched = CurrentDbO For inti = 0 To 4.
Debug.Print dbEntSched. QueryDefs (inti).Name Next inti.
Инструкция For Each… Next
Инструкция For Each… Next позволяет выполнить блок инструкций процедурь для каждого элемента массива или семейства.
For Each элемент In группа
[]
[Exit For].
[<�инструкции-тела-цикла>] Next [элемент].
Пример:
Для вывода списка всех запросов в базе данных Entertainment Schedule можно использовать следующий цикл For Each:
Dim dbEntSched As Database.
Dim qdf As QueryDef.
Set dbEntSched = CurrentDbO.
For Each qdf In dbEntSched.QueryDefs.
Debug.Print qdf.Name Next qdf.
Инструкция GoTo
Инструкция GoTo используется для выполнения безусловного перехода к другой инструкции в процедуре.
Синтаксис:
GoTo { метка | номер-строки}
Пример:
Чтобы перейти к строке с меткой SkipOver, введите:
GoTo SkipOver.
Инструкция If… Then… Else
Инструкция If… Тhen… Else используется для выполнения той или друго! группы инструкций в зависимости от значений условных выражений.
Синтаксис:
!f Then
[ Инструкции-процедуры-!^ [Elself условие-2 Then
[]]. . [Else.
[]] End If.
или.
If Then [Else '
Пример:
Чтобы присвоить целочисленное значение переменной в зависимости от того, начинается ли строка символов с буквы в интервале от, А до F, от G до N либо от О до Z, введите:
Dim strMyString As String, strFirst As String, _.
intVal As Integer.
strFirst = UCase$(Mid$(strMyString, 1, 1)) If strFirst >= «A» And strFirst <= «F» Then.
intVal = 1 Elself strFirst >= «G» And strFirst <= «N» Then.
intVal = 2 Elself strFirst >= «0» And strFirst <= «Z» Then.
intVal = 3 Else.
intVal = 0 End If.
Инструкция Select Case
Инструкция Select Case используется для выполнения групп инструкций в зависимости от результата сравнения некоторого выражения со списком или диапазоном значений.
Синтаксис:
Select Case [Case [ Инструкции-процедуры-1>] ].
[Case Else.
[' ] End Select
где — это некоторое числовое или строковое выражение, а есть.
{,…} где это
[выражение | выражение! То выражение 2 |—ь Is выражение}
и где есть:
{= 1 о 1 I <= I>=}.
Пример:
Чтобы присвоить целочисленное значение переменной в зависимости от того, начинается ли строка символов с буквы в интервале от, А до F, от G до N либс от О до Z, введите:
Dim strMyString As String, intVal As Integer Select Case UCase$(Mid$(strMyString, 1, 1)) Case «A» To «F» .
intVal = 1 Case «G» To «N» .
intVal == 2 Case «0» To «Z» .
intVal = 3 Case Else.
intVal = 0 End Select.
Инструкция Stop
Инструкция Stop приостанавливает выполнение процедуры.
Синтаксис:
Stop.
Инструкция While… Wend
Инструкция While… Wend используется для повторного выполнения блока инструкций до тех пор, пока условие остается истинным.
Синтаксис:
While.
[] Wend
Пример:
Чтобы прочитать все строки в таблице tbICIubs, пока не встретится конец набора записей, введите:
Dim dbEntSched As Database.
Dim rcdClubs As RecordSet.
Set dbEntSched = CurrentDbO.
Set rcdClubs = dbEntSched. OpenRecordSet («tbICIubs»).
While Not rcdClubs.EOF.
rcdClubs.MoveNext Wend.
Инструкция With
Инструкция With позволяет выполнить последовательность инструкций, не повторяя имя указанного объекта в ссылках на семейства, объекты, свойства и методы.
Синтаксис:
With [] End With
Пример:
Чтобы добавить новую строку в таблицу, используя краткую запись ссылок, в которых участвует объект типа Recordset, введите:
Dim rst As qdf Recordset, db As Database Set db = CurrentDbO.
Set rst = db. OpenRecordset («MyTable», db. OpenDynaset, _.
dbAppendOnly) With rst.
' Создание новой записи.
*Addnew.
' Установка значений полей.
![FieldOne] = «1» .
![FieldTwo] = «John» .
![FieldThree] = «Viescas» .
.Update.
.Close End With.
Запуск макрокоманд
Visual Basic для приложений позволяет выполнять многие макрокоманды Прямые эквиваленты VBA существуют только для некоторых макрокоманд. Для выполнения макрокоманд используются методы объекта DoCmd.
Объект DoCmd
Пользуясь методами объекта DoCmd, вы можете выполнять макрокоманды в процедурах VBA.
Синтаксис:
DoCmd. метод [аргумент],.. .
Примеры:
Чтобы открыть форму Customer для ввода данных в режиме формы, введите:
DoCmd.OpenForm «Customer», acNormal,, , acAdd Чтобы закрыть форму Supplier, введите:
DoCmd.Close acForm, «Supplier» .
Макрокоманды и их эквиваленты в vba
Некоторые макрокоманды не могут быть выполнены из процедуры VBA. Однако для них в Visual Basic для приложений существуют эквивалентные инструкции (см. приведенную ниже таблицу).
AddMenu Нет эквивалента.
MsgBox Инструкция или функция MsgBox.
RunApp функция Shell.
RunCode Инструкция Call или функция Execute.
SendKeys Инструкция SendKeys.
SetValue Присвоение значения переменной (=).
StopAIIMacros Инструкция Stop или End.
StopMacro Инструкция Exit Sub или Exit Function.
Обработка ошибок
Одна из наиболее мощных и привлекательных характеристик VBA — это возможность перехватывать любые ошибки, анализировать их и предпринимать корректирующие действия.
Инструкция On Error
Инструкция On Error используется для включения режима перехвата ошибок, передачи управления в блок обработки ошибок или для того, чтобы игнорировать некоторые ошибки или вовсе отключить режим перехвата ошибок.
Синтаксис:
On Error (GoTo идентификатор-строки | Resume [Next] I GoTo
Примеры:
Чтобы включить режим перехвата ошибок, но продолжить выполнение пр (дуры со следующей инструкции, введите:
On Error Resume Next.
Чтобы включить режим перехвата ошибок и передать управление инструкщ меткой My Error в случае возникновения ошибки, введите:
On Error GoTo MyError:
Чтобы отключить режим перехвата ошибок в текущей процедуре, введите:
On Error GoTo 0.