Слайд 2VBA - Visual Basic for Applications
это объектно-ориентированный язык программирования
![VBA - Visual Basic for Applications это объектно-ориентированный язык программирования](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-1.jpg)
Слайд 3Основные понятия
объект
семейство
метод
класс
свойство
событие
объектная модель
![Основные понятия объект семейство метод класс свойство событие объектная модель](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-2.jpg)
Слайд 4Объектные модели Microsoft Office 2002
библиотека объектов Microsoft Access (Microsoft Access 10.0
![Объектные модели Microsoft Office 2002 библиотека объектов Microsoft Access (Microsoft Access 10.0](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-3.jpg)
Object Library);
библиотека объектов доступа к данным (Microsoft DAO 3.6 Object Library);
библиотека объектов ActiveX (Microsoft ActiveX Data Objects 2.6);
расширения ADO для поддержки DDL и защиты информации (Microsoft ADO Extensions 2.6 for DDL and Security);
библиотека объектов Microsoft Jet и репликации (Microsoft Jet and Replication Objects 2.6).
Кроме этого, в приложениях Access обычно используются:
библиотека объектов Visual Basic (Microsoft Visual Basic for Applications);
библиотека объектов Microsoft Office (Microsoft Office 10.0 Object Library). Две эти библиотеки являются общими для всех приложений Microsoft Office.
Слайд 5Процедуры VBA
Sub <имяПроцедуры> (<аргумент1>, <аргумент2>, ... )
End Sub
![Процедуры VBA Sub ( , , ... ) End Sub](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-4.jpg)
Слайд 6Функции VBA
Function <имяФункции> (<аргумент1>, <аргумент2>, ... )
<имяФункции>
![Функции VBA Function ( , , ... ) = End Function](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-5.jpg)
= <возвращаемоеЗначение>
End Function
Слайд 7Примеры вызова процедуры под именем CrossRC с передачей ей двух аргументов (константы
![Примеры вызова процедуры под именем CrossRC с передачей ей двух аргументов (константы](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-6.jpg)
и выражения):
CrossRC 7, i + 2
ИЛИ
Call CrossRC(7, i + 2)
Пример вызова двух функций — Left и Mid, и использования возвращаемого ими значения в выражении:
yStr = Left(y, 1) & Mid(у, 2, 1)
Слайд 8Допускается два различных способа передачи переменных процедуре или функции: по ссылке и
![Допускается два различных способа передачи переменных процедуре или функции: по ссылке и по значению.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-7.jpg)
по значению.
Слайд 9Пример:
Sub Main()
а = 10
b = 20
с = 30
Call
![Пример: Sub Main() а = 10 b = 20 с = 30](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-8.jpg)
Examplel(a, b, с)
Call MsgBox(a)
Call MsgBox(b)
Call MsgBox(c)
End Sub
Sub Example1(x, ByVal y, ByRef z)
x = x + 1
у = у + 1
z = z + 1
Call MsgBox(x)
Call MsgBox(y)
Call MsgBox(z)
End Sub
Слайд 10 Программа может состоять (и обычно состоит) из многих процедур и функций,
![Программа может состоять (и обычно состоит) из многих процедур и функций, которые](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-9.jpg)
которые могут располагаться в одном или нескольких модулях. Модули группируются в проекты, при этом в одном проекте могут мирно сосуществовать несколько различных программ, использующих общие модули или процедуры.
Каждая из процедур, находящихся в одном модуле, должна иметь уникальное имя, однако в проекте может содержаться несколько различных модулей.
Слайд 11Если в проекте содержится несколько различных процедур с одним и тем же
![Если в проекте содержится несколько различных процедур с одним и тем же](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-10.jpg)
именем, необходимо для уточнения имени использовать при вызове процедуры следующий синтаксис:
<имяМодуля>.<имяПроцедуры>
Если при этом имя модуля состоит из нескольких слов, следует заключить это имя в квадратные скобки. Например, если модуль называется "Графические процедуры", а процедура — "Крестик", вызов может выглядеть следующим образом:
[Графические процедуры].Крестик
Допускается также использование процедур, расположенных и в других проектах. При этом может потребоваться еще один уровень уточнения имени:
<имяПроекта>.<имяМодуля>.<имяПроцедуры>
Слайд 12Переменные, константы и типы данных
Объявление переменных
Dim <имяПеременной> [Аs<типДанных>]
Пример:
Dim i As
![Переменные, константы и типы данных Объявление переменных Dim [Аs ] Пример: Dim](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-11.jpg)
Integer, j As Integer
Dim x As Double
Слайд 13Типы данных
Array Массив переменных, для ссылки на конкретный элемент массива используется индекс.
![Типы данных Array Массив переменных, для ссылки на конкретный элемент массива используется](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-12.jpg)
Boolean Требуемая память: зависит от размеров массива Принимает одно из двух логических значений: True или False. Требуемая память: 2 байта Byte Число без знака от 0 до 255 Требуемая память: 1 байт
Currency Используется для произведения денежных вычислений с фиксированным количеством знаков после десятичной запятой, в тех случаях, когда важно избежать возможных ошибок округления.
Диапазон возможных значений: от -922 337 203 685 477,5808 до 922 337 203 685 477,5807. Требуемая память: 8 байтов. Символ определения типа по умолчанию: @
Date Используется для хранения дат. Диапазон возможных значений: от 1 января 0100 г. до 31 декабря 9999 г. Требуемая память: 8 байтов
Double Числовые значения с плавающей точкой двойной точности.
Диапазон возможных значений для отрицательных чисел: от -1 ,797693 13486232Е308 до -4,94065645841 247Е-324.
Диапазон возможных значений для положительных чисел: от 4,94065645841 247Е-324 до 1, 7976931 3486232Е308.
Требуемая память: 8 байтов. Символ определения типа по умолчанию: #
Слайд 14Типы данных
Integer Короткие целые числовые значения. Диапазон возможных значений: от -32 768
![Типы данных Integer Короткие целые числовые значения. Диапазон возможных значений: от -32](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-13.jpg)
до 32 767. Требуемая память: 2 байта. Символ определения типа по умолчанию: %
Long Длинные целые числовые значения.
Диапазон возможных значений: от -2 147 483 648 до 2 147 483 647.
Требуемая память: 4 байта. Символ определения типа по умолчанию: &
Object Используется только для хранения ссылок на объекты. Требуемая память: 4 байта
Single Числовые значения с плавающей точкой обычной точности.
Диапазон возможных значений для отрицательных чисел: от -3.402823Е38 до -1 ,401 298Е-45.
Диапазон возможных значений для положительных чисел: от 1 ,401 298Е-45 до 3.402823Е38.
Требуемая память: 4 байта. Символ определения типа по умолчанию: !
Слайд 15Типы данных
String
Используется для хранения строковых значений. Длина строки: от 0 до
![Типы данных String Используется для хранения строковых значений. Длина строки: от 0](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-14.jpg)
64 Кбайтов. Требуемая память: 1 байт на символ. Символ определения типа по умолчанию: $
Variant
Может использоваться для хранения различных типов данных: даты/времени, чисел с плавающей точкой, целых чисел, строк, объектов.
Требуемая память: 16 байтов, плюс 1 байт на каждый символ строковых значений.
Символ определения типа по умолчанию: отсутствует
Слайд 16 Для определения типа данных аргументов процедуры или функции используется описание типа данных
![Для определения типа данных аргументов процедуры или функции используется описание типа данных](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-15.jpg)
непосредственно в заглавной строке процедуры или функции. Например:
Sub SplitStr(str1 As String,
str2 As String, str3 As String)
Определение типа данных возвращаемого функцией значения завершает заглавную строку функции, например:
Function FindSplitSpace
(strl As String) As Integer
Слайд 17Константы
Const <имяКонстанты>
[As <типДанных>] = <выражение>
где <выражение> — эго любое значение
![Константы Const [As ] = где — эго любое значение или формула,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-16.jpg)
или формула, возвращающая значение, которое должно использоваться в качестве константы.
Например, следующий оператор определяет целую константу maxLen:
Const maxLen% = 30
Слайд 18Предопределенные константы
Встроенные константы, относящиеся к объектам Access, начинаются с префикса ас,
![Предопределенные константы Встроенные константы, относящиеся к объектам Access, начинаются с префикса ас,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-17.jpg)
относящиеся к объектам Excel — с префикса xl, относящиеся к объектам Word — с префикса wd, а относящиеся к объектам VBA — с префикса vb.
Например, в команде
DoCmd.OpenForm "Orders",
acNormal, , stLinkCriteria
используется встроенная константа Access acNormal.
Слайд 19Ссылки на объекты
Dim <имяПеременкой> As Object
Set <имяПеременной> = <ссылкаНаОбъект>
Пример:
Dim MyBase
![Ссылки на объекты Dim As Object Set = Пример: Dim MyBase As](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-18.jpg)
As Database
Set MyBase = CurrentDb( )
Слайд 20Массивы
Dim <имяМассива> (<размер1>, <размер2>, ...) As <типДанных>
где <размер1>, <размер2> и т.д.
![Массивы Dim ( , , ...) As где , и т.д. задают](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-19.jpg)
задают размеры массива — количество индексов и максимально допустимое значение для каждого. конкретного индекса. При этом индексирование элементов массива по умолчанию начинается с нуля.
Пример:
Dim Array1 (9) As Integer
Dim Array2 (4, 9) As Variant
Слайд 21 При объявлении массива можно указать не только верхнюю границу индекса, но и
![При объявлении массива можно указать не только верхнюю границу индекса, но и](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-20.jpg)
его нижнюю границу.
Dim <имяМассива> (<мин1> То <макс1>, ...)
As <типДанных>
Например:
Dim Temperature (-14 То 0)
As Single
Синтаксис объявления и определения размеров динамического массива:
Dim <имяМассива> ( ) As <типДанных>
ReDim <имяМассива> (<размер1>,<размер2>,... )
Слайд 22Область действия переменных и процедур
уровень процедуры;
уровень модуля;
уровень проекта.
![Область действия переменных и процедур уровень процедуры; уровень модуля; уровень проекта.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/311995/slide-21.jpg)