Реферат: Содержание 1 введение 6





Содержание


1 ВВЕДЕНИЕ 6

2 Проект VBA 8

3 Типы данных и переменные 10

3.1 Типы данных в VBA 10

3.2 Объявление простых переменных 13

3.3 Объявление констант 15

3.4 Массивы 15

3.5 Записи и тип, определенный пользователем 17

4 Операции и встроенные функции 19

4.1 Выражение. Правила построения выражений в VBA 20

4.2 Функции обработки числовых данных 22

4.3 Обработка строковых данных 23

4.4 Работа с датами и временем 25

5 Операторы 30

5.1 Операторы как основа 30

5.2 Оператор комментария 31

5.3 Присваивание 32

Dim MyStr As String, MyInt As Integer 33

5.4 Управляющие операторы 36

5.5 Работа с файлами и папками 49

5.6 Прочие операторы 59

6 Процедуры и функции 62

6.1 Классификация процедур 62

6.2 Синтаксис процедур и функций 63

7 Диалоговый ввод/вывод информации 66

8 Интегрированная среда vba 70

8.1 Окно редактирования проекта 70

8.2 Окно редактирования форм UserForm 74

8.2.1 Создание формы 74

8.2.2 Размещение элементов управления в форме 75

8.2.2.1 Поле (TextBox) 77

8.2.2.2 Надпись (Label) 79

8.2.2.3 Кнопка (CommandButton) 79

8.2.2.4 Список (ListBox) 81

8.2.2.5 Поле со списком (ComboBox) 83

8.2.2.6 Флажок (CheckBox) 84

8.2.2.7 Переключатель (OptionButton) 85

8.2.2.8 Рамка (Frame) 86

8.2.2.9 Счетчик (SpinButton) 87

8.2.2.10 Выключатель (ToggleButton) 88

8.2.3 Пример: инициализация значений элементов управления 89

8.2.4 Отображение диалоговых окон 90

8.2.5 Пример: проверка условий на значение полученных данных из формы 91

9 Объекты. классы. Методы и свойства объектов 93

9.1 Объекты и классы 93

9.2 Объекты OLE и ActiveX 94

9.3 Иерархия объектов 95

9.4 Методы 96

9.5 Свойства 96

9.6 Событие 97

10 Автоматизация работы в Word С помощью VBA 98

10.1 Программирование на макроязыке Visual Basic для приложений 98

10.2 Автоматическое создание макросов 99

10.3 Просмотр и корректировка и удаление макросов 100

10.4 Создание макросов в редакторе VBA 101

10.5 Добавление модуля VBA в шаблон 104

10.6 Какие файлы присоединены к шаблону? 106

10.7 Автоматизация решения типичных задач 107

10.7.1 Отображение диалогового окна при запуске 107

10.7.2 Выделение слов предметного указателя 107

10.7.3 Выбор принтера 110

11 Автоматизация работы в Excel с помощью VBA 115

11.1 Модель объектов Excel 115

11.2 Использование объекта Application 115

11.3 Использование свойств объекта Application 115

11.4 Использование методов объекта Application 122

11.6 Использование семейства Workbooks и объекта Workbook 132

11.6.1 Использование свойств и методов семейства Workbooks 132

11.6.2 Использование свойств объекта Workbook 136

11.6.3 Методы объекта Workbook 137

11.6.4 Использование событий объекта Workbook 140

11.7 Использование семейства Worksheets 146

11.7.1 Использование свойства Count семейства Worksheets 146

11.7.2 Использование метода Add семейства Worksheets 146

11.8 Использование объекта Worksheet, его свойств и методов 147

11.9 Использование объекта Range 149

11.9.1 Использование свойств объекта Range 150

11.9.2 Использование методов объекта Range 154

11.9.3 Примеры использования объектов Range 157

11.10 Создание собственных функций рабочего листа 158

11.10.1 Описание собственных функций рабочего листа 158

11.10.2 Разработка собственных функций рабочего листа 159

Методические указания по выполнению курсовой работы по дисциплине «Компьютерная подготовка» 161

Вариант 1 163

Вариант 2 163

Вариант 3 164

Вариант 4 164

Вариант 5 165

Вариант 6 166

Вариант 7 167

Вариант 8 167

Вариант 9 168

Вариант 10 168

^ Контрольная работа № 1 170

Контрольная работа №2 179

Тема: «Макросы VBA» 179

Список рекомендуемой литературы 186



1 ВВЕДЕНИЕ

Microsoft Office – это среда, в которой решение многих задач не требует знания программирования. В то же время, создатели пакета Microsoft Office предусмотрели прекрасную возможность для пользователя – возможность самому конструировать профессиональные приложения, работающие в любом из компонентов пакета Microsoft Office. Это существенно расширило возможности применения пакета Microsoft Office в различных сферах деятельности и бизнеса. Для создания собственных приложений пользователю предоставлен программный инструментарий, встроенный в пакет Office – редактор языка Visual Basic for Applications (VBA). Встроенный язык открывает дорогу достаточно новому направлению в современном программировании – офисному программированию.

VBA является одним из самых популярных языков программирования, прост в освоении и позволяет быстро получить ощутимые результаты. VBA применяет технологию визуального программирования, позволяющую наглядно конструировать экранные формы и управляющие элементы, а также запись всей программы или ее частей при помощи средства MacroRecorder (автоматическая запись макроса). Довольно часто при решении простейших задач достаточно средств визуального программирования. Но если требуется создать более сложное приложение с содержательной обработкой данных, то на первый план выступает сам язык программирования VBA.

Цель курса «Компьютерная подготовка» – изучение основ программирования в среде VBA, создание собственных приложений, работающих в Word и Excel.

В рамках дисциплины «Компьютерная подготовка» предусмотрено:

1) самостоятельное изучение всех тем курса на основе учебного пособия и рекомендуемой литературы;

2) обязательное выполнение двух контрольных работ;

3) сдача экзамена;

4) выполнение курсовой работы;

5) консультации преподавателя через центр дистанционного образования.

Данное учебное методическое пособие содержит теоретический материал дисциплины. Рассматриваются основные элементы языка программирования VBA (переменные, константы, операторы, объекты языка, макросы, элементы управления, формы).


^ 2 Проект VBA

VBA относится к языкам объектно-ориентированного программирования. Чтобы начать писать программы на VBA, необходимо знать элементы языка, инструкции, их синтаксис и правила составления кода, объекты и их иерархию. Код VBA хранится в проектах. Рассмотрим элементы, которые могут входить в состав проекта.

Процедуры. Процедура представляет собой поименованную последовательность совместно выполняемых инструкций (операторов). Существуют процедуры типа Sub, Function и Property. Имя процедуры всегда определяется на уровне модуля.

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

Процедура Function (функция) отличается от предыдущего типа процедур тем, что обязательно возвращает одно результирующее значение. Функции обычно используют для вычисления численного значения, получения символьной строки в результате операций над текстом или для определения логического значения.

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

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

Макросы представляют собой подпрограммы (процедуры типа Sub), не имеющие параметров и размещаемые в модуле. Макросы, создаваемые путем протоколирования действий пользователя, размещаются в модуле New Macros.

Модули класса служат для размещения в них описания объектов, создаваемых в VBA. Каждый модуль класса содержит описание одного типа объекта.

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


^ 3 Типы данных и переменные


3.1 Типы данных в VBA

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

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

имена должны начинаться с буквы;

имя не должно содержать пробел, точку, восклицательный знак и символы @, &, $, #;

имя должно включать не более 255 символов;

не рекомендуется задавать имена, совпадающие с ключевыми словами VBA;

имя каждой переменной должно быть уникальным.

Определение типа данных задает:

область возможных значений;

структуру организации данных;

операции, определенные над данными этого типа.

В VBA поддерживается определенная классификация типов данных.

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

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

Статические и динамические типы данных. Для данных статического типа память отводится в момент объявления – требуемый размер данных известен в момент объявления. Для данных динамического типа размер данных в момент объявления не известен, и память им выделяется в процессе выполнения программы.


Таблица 3.1  Простые типы данных языка VBA










Имя типа

Возможные значения

^ Требуемая память

Boolean

True, False

2 байта

Byte

0..255

1 байт

Integer

-32768…+32767

2 байта

Long

Примерно -2 000 000 000 …+ 2 000 000 000

4 байта

Decimal

Примерно 30 десятичных цифр;

можно указать число цифр после десятичной запятой

12 байтов

Single

-3,4Е38…-1,4Е-45 для отрицательных значений;

1,4Е–45…3,4Е38 для положительных значений

4 байта

Double

1,7Е308…-4,9Е-324 для отрицательных значений;

4,9Е-324…1,7Е308 для положительных значений

8 байтов

Currency

Десятичные числа с фиксированной позицией запятой. Возможны 15 цифр до запятой и 4 после

8 байтов

String

Есть два вида строк:

 строки фиксированной длины имеют до 216 символов;

 строки переменной длины имеют до 231 символов

10 байтов +1 байт на символ в обычной кодировке и 2 байта в кодировке Unicode

Date

Даты изменяются в диапазоне от 1 января 100 г. до 31 декабря 9999 года

8 байтов

Object

Ссылка на объект (указатель)

4 байта

V
Продолжение табл. 3.1
ariant

Универсальный тип, значением которого могут быть данные любого из перечисленных выше типов, объекты, значения NULL и значения ошибок ERROR.

Зависит от контекста, но не менее 16 байтов



^ 3.2 Объявление простых переменных

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

Переменные, объявленные на уровне процедуры, называются локальными по отношению к ней, то есть они видны только в данной процедуре. Переменные уровня модуля являются глобальными. Область видимости глобальных переменных может распространяться:

на все процедуры модуля, в котором они объявлены. Такие глобальные переменные, называемые закрытыми (Private), должны быть объявлены на уровне модуля: либо оператором Private, либо оператором Dim;

на весь программный проект – все процедуры всех модулей данного проекта. Такие глобальные переменные, называемые открытыми (Public), должны быть объявлены оператором Public.

Локальные переменные уровня процедуры могут быть объявлены оператором Static, что делает их статическими. Статические переменные характеризуются тем, что при выходе из процедуры их значения сохраняются, в отличие от обычных локальных переменных. Просто данные значения становятся временно недоступными до тех пор, пока процедура не будет вызвана вновь. При использовании статических переменных необходима их первоначальная инициализация. VBA инициализирует переменные при их объявлении следующими значениями:

0 – для числовых значений;

пустая строка («») – для строк переменной длины;

строка, содержащая нули, – для строк фиксированной длины;

Empty (значение, указывающее на отсутствие инициализации) – для типа Variant;

для массивов и записей (типа, определенного пользователем) каждый элемент инициализируется в соответствии с указанными правилами.

Объявление простых переменных имеет следующий синтаксис:

{Dim | Public | Private | Static} <имя переменной> [As <имя типа>]

[,<имя переменной> [As <имя типа>]]

Каждое объявление переменной связывает имя переменной с ее типом, заданным конструкцией As. Если после имени переменной отсутствует указанная конструкция, то переменной будет присвоен тип Variant. Отметим также, что переменные типа Decimal объявляются с использованием функции CDec.


Приведем пример описания переменных:

^ Public Const pi As Double = 3.1415926 ' Глобальная переменная

Public Sub MY_Prnt()

' Локальные переменные

Dim B As Byte, I As Integer, L As Long

Dim Sng As Single, D As Double, C As Currency

Dim Sf As String, Sv As String, Dat As Date

Dim O As Object, V

Debug.Print "Sng=", Sng, "D=", D, "C=", C

Debug.Print "B=", B, "I=", I, "L=", L

Debug.Print "Sf=", Sf, "Dat=", Dat, "Sv=", Sv

If O Is Nothing Then Debug.Print "Объект не определен"

If V = Empty Then Debug.Print "Variant переменные не инициализированы"

End Sub


Результат отладочной печати после запуска на исполнение данной процедуры выглядит следующим образом:

Sng = 0 D = 0 C = 0

B = 0 I = 0 L = 0

Sf = Dat = 0:00:00 Sv=

Объект не определен.

Variant переменные не инициализированы.

^ 3.3 Объявление констант

Синтаксис объявления констант:

[Public | Private] Const <имя константы> [As type] = <константное выражение>

Пример объявления константы:

^ Public Const pi As Double = 3.1415926

Как и переменные, именованные константы можно объявлять на уровне процедуры или модуля. В первом случае используется только ключевое слово Const, во втором – дополнительно можно задать спецификаторы Public или Private. По умолчанию глобальные константы имеют статус Private.

3.4 Массивы

Массив – это самый распространенный структурный тип данных. Массив представляет собой упорядоченную совокупность данных одного типа. Порядок элементов задается индексами, то есть порядковыми номерами элементов в соответствующей структуре. В VBA массивы могут одномерными и многомерными. Допустимое число измерений около 60.

При описании массивов к уже знакомой структуре описания переменных добавляется необходимость указания размерности:

{ Dim | Public | Private | Static} <имя переменной> (<список размерностей>) [As <имя типа>]

Каждое измерение в списке отделяется запятой и определяется заданием верхней и нижней границы изменения индексов. Массивы – это структуры с прямым доступом к элементам. Доступ осуществляется посредством указания имени массива и индекса элемента. Индекс элемента прописывается в круглых скобках.

Приведем пример:

^ Public Sub MyArray()

Const LowBound As Integer = –5, HighBound As Integer = 5

Dim MyArr(LowBound To HighBound) As Byte

Dim I As Integer

Debug.Print "Элементы массива MyArr:"

For I = LowBound To HighBound

MyArr(I) = I + 6

Debug.Print MyArr(I)

Next I

End Sub

При исполнении данной процедуры будут напечатаны числа от 1 до 11.


Рассмотренный пример показывает работу со статическим массивом. Количество элементов такого массива определено в момент объявления его в программе. VBA имеет мощное средство работы с массивами – динамические массивы. Массив считается динамическим, если при первоначальном объявлении не указывается его размерность, но в последующем она может быть определена и переопределена оператором ReDim. Размерность определяется динамически в той процедуре и в тот момент, когда она становится фактически известной. При этом границы изменения индексов можно задавать не только как константы, но и как выражения, зависимые от переменных. Если же при переопределении массива задать ключевое слово Preserve, можно сохранить все ранее полученные значения элементов и расширить массив, добавив новые элементы.

Приведем пример работы с динамическим массивом:

'Объявление динамического массива на уровне модуля

Public Vector() As Integer

^ Public Sub DinArray()

'Определяется фактическая размерность массива Vector

Dim N As Byte, I As Byte

N = InputBox("Введите число элементов вектора")

ReDim Vector(1 To N)

For I = 1 To N

Vector(I) = 2 * I + 1

Next I

' Массив расширяется с сохранением ранее вычисленных элементов

ReDim Preserve Vector(1 To 2 * N + 1)

For I = N + 1 To 2 * N + 1

Vector(I) = 2 * I

Next I

'А теперь печать

Debug.Print "Элементы Vector:" & Chr(13)

For I = 1 To N * 2 + 1

Debug.Print Vector(I)

Next I

End Sub

При исполнении данной процедуры будет выдан запрос на определение количества элементов массива, затем печать выведенных значений. Например, если ввести число 10, то вначале будут напечатаны нечетные числа от 3 до 21, а затем четные от 22 до 42.

^ 3.5 Записи и тип, определенный пользователем

Запись относится к сложным типам данных, который конструируется, как и массив, объединением совокупности данных простых типов. В отличие от массива, запись представляет собой объединение элементов, каждый из которых может иметь свой тип. Элементы записи называют ее полями. Запись хорошо ассоциируется с таблицей. В этом случае имена полей записи соответствуют наименованиям столбцов таблицы, а значения элементов записи – значениям соответствующих ячеек какой-либо строки таблицы.

Формально в VBA отсутствует понятие «запись». Чтобы обеспечить работу с записями, в VBA предусмотрены средства для определения пользовательского типа. Таким образом, записи в VBA называются типом, определенным пользователем. Синтаксис такого определения определен следующим образом:


[Private | Public] Type <имя типа>

<имя элемента> [([<размерность массива>])] As <тип элемента>

[<имя элемента> [([<размерность массива>])] As <тип элемента>]

End Type

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

Приведем пример определения типа и его использования:

^ Type Fam 'Определение структуры записи из двух полей

FirstName As String

LastName As String

End Type

Type Person

Fio As Fam

Birthdate As Date

End Type

Public Sub UserType()

Объявление переменных типа запись

Dim Petrov As Person

Dim Mamontov As Person

'Присваиваются значения полям соответствующих записей

Petrov.Fio.FirstName = "Петр"

Petrov.Fio.LastName = "Петров"

Petrov.Birthdate = #1/23/1961#

Mamontov.Fio.FirstName = Petrov.Fio.FirstName

Mamontov.Fio.LastName = "Мамонтов"

Mamontov.Birthdate = #7/21/1966#

'А теперь просмотр результата в окне вывода

MsgBox (Petrov.Fio.FirstName & " " & Petrov.Fio.LastName &

" родился " & Petrov.Birthdate)

MsgBox (Mamontov.Fio.FirstName & " " & Mamontov.Fio.LastName & " родился " & Mamontov.Birthdate)

End Sub

Как видно из представленного фрагмента программы, определенный пользователем тип используется при описании программных переменных так же, как и стандартные типы. Здесь же показан принцип работы с записями. Записи обрабатываются поэлементно. Для доступа к элементу записи используется составное имя, которое состоит из имени записи и имени соответствующего поля или полей. Соответствующие имена разделяются знаком точка. Другая форма обращения к элементу записи предполагает использование оператора присоединения (With …. End With). Рассмотрим на примере принцип кодирования данной инструкции языка VBA.

^ With Mamontov

.Fio.FirstName = Petrov.Fio.FirstName

.Fio.LastName = "Мамонтов"

.Birthdate = #7/21/1966#

End With

Над элементами записи можно выполнять все операции, которые допустимы над данными соответствующего типа. В целом над записью можно выполнять только операцию присвоения, например, Petrov = Mamontov.


^ 4 Операции и встроенные функции


4.1 Выражение. Правила построения выражений в VBA

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

Перечислим основные операции, которые можно использовать в VBA при построении выражений (табл. 4.1).


Таблица 4.1  Операции и их приоритет
















Приоритет

Арифметические

Сравнения

Логические

Описание некоторых операций

1

Возведение в степень (^)

Равенство

(=)

Отрицание

(Not)

При возведении в степень основание и показатель могут быть арифметическими выражениями любого типа. Результат имеет тип Double

2

Унарный минус (–)

Неравенство (<>)

Конъюнкция (And)




3

Умножение, деление (*, /)

Меньше (<)

Дизъюнкция (Or)




4

Деление нацело (\)

Больше (>)

Исключительное ИЛИ (Xor)

Деление нацело определено над целочисленными данными (применимо и к вещ
Продолжение табл. 4.1
ественным данным) и дает результат целого типа. Исключительное ИЛИ требует, чтобы один из операндов имел значение, отличное от True

5

Остаток от деления нацело (mod)

Меньше или равно (<=)

Эквивалентность (Eqv)

Операция mod определена над данными целого типа и возвращает результат целого типа

6

Сложение,

вычитание (+, –)

Больше или равно (>=)

Импликация (Imp)

Среди логических операций определена операция следования (импликация), ложная в единственном случае – когда посылка истинна, а заключение ложно

7

Конкатенация строк (&)

Подобия (Like),

равенство ссылок (Is)




Операция Like проверяет соответствие строки образцу. Операция Is, определенная над объектами, не проверяет равенство сам
Окончание табл. 4.1
их объектов, она проверяет совпадение ссылок. Ссылки должны задавать один и тот же объект


При построении выражений необходимо учитывать следующее:

если выражение содержит операции разных категорий, то первыми выполняются арифметические операции, затем операции сравнения, и последними – логические;

все операции сравнения имеют один и тот же приоритет. Арифметические и логические операции выполняются в соответствии с указанным приоритетом;

одна и та же операция, записанная несколько раз подряд, или операции одного приоритета выполняются слева направо – из двух операций первой выполняется та, которая стоит левее в записи выражения;

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

операция конкатенации не является арифметической, но при ее появлении в выражении она выполняется после всех арифметических операций, но до вычисления операций сравнения.



^ 4.2 Функции обработки числовых данных

Помимо вышеуказанных операций VBA предоставляет набор математических функций, расширяющий возможности обработки числовых данных. Перечислим базовые функции:

Abs(число) – абсолютное значение числа;

Atn(число) – арктангенс (в радианах) аргумента, задающего тангенс угла;

Cos(число) – косинус угла. Аргумент число задает угол в радианах;

Sin(число) – синус угла;

Exp(число) – экспонента, т.е. результат возведения в степень числа е;

Log(число) – натуральный логарифм числа;

Rnd[(число)] – результат представляет число, равномерно распределенное случайное число в интервале [0–1]. Если аргумент число не задан или больше нуля, то порождается очередное случайное число. Если он равен 0, то результатом будет предыдущее случайное число, а если число меньше нуля, то каждый раз порождается одно и то же число, определяемое аргументом. Перед тем, как получить последовательность случайных чисел, необходимо вызвать функцию Randomize для инициализации последовательности;

Sng(число) – знак числа (если число больше нуля – 1, равно нулю – 0, меньше нуля – –1);

Sqr(число) – квадратный корень;

Tan(число) – тангенс угла.



^ 4.3 Обработка строковых данных

Операции над строками


Над строковыми переменными, определенными в проектах VBA, допустимо выполнение двух видов операций: сравнения и конкатенации строк.

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

^ Dim stroka As String

Dim Ver As Single

Ver = 1

stroka = "Компьютерная " + "подготовка " + " часть " & Ver

MsgBox (stroka)


При сравнении строк применимы обычные операции сравнения. При этом сравнение может быть осуществлено в соответствии с расположением строк в словаре либо побитно. Второй тип сравнения обладает чувствительностью к регистру. Чтобы определить тип сравнения, необходимо в начале модуля поместить инструкцию Option Compare Text | Binary.

Сравнение строк с образцом осуществляется с использованием операции Like. При задании образца используются специальные символы (табл. 4.2), позволяющие разнообразить операцию сравнения.


Таблица 4.2  Специальные символы, используемые при задании шаблона


Символы

Интерпретация

Примеры

*

Любой текст – произвольное число

Шаблону Agent* соответствуют все тексты, начинающиеся со слова Agent. Строки Agent007 и Agent Майор Пронин удовлетворяют шаблону

?

Один любой символ

Шаблону К?к удовлетворяют строки Кок и Кук

#

Любая цифра от 0 до 9

Шаблону Agent### соответствует 1000 различных строк, среди которых и Agent007

[множество символов]

Любой символ, принадлежащий множеству

Задать множество можно с помощью перечисления и интервалов. Шаблону К[аоу]к удовлетворяют слова «Как», «Кок», «Кук»

[!множество символов]

Любой не принадлежащий множеству символ

Шаблону [!а–я] удовлетворяет символ, не являющийся буквой русского алфавита

^ Основные функции обработки строковых переменных


Функция Len(string) возвращает длину строки (число символов), которая задана аргументом String.

Функция InStr определяет позицию первого вхождения одной строки внутри другой строки. Синтаксис:

^ InStr([start,]string1, string2[, compare])

Необязательный аргумент start задает позицию, с которой начинается поиск (по умолчанию – с первого символа строки). String1 – строка, в которой осуществляется поиск, string2 – подстрока, вхождение которой ищется. Необязательный аргумент compare указывает способ сравнения строк. Его значение по умолчанию 0 используется для выполнения двоичного сравнения; 1 задает посимвольное сравнение без учета регистра.

Функция ^ Left(string, length) выделяет в строке string указанное число length символов слева.

Функция Rigth(string, length) выделяет в строке string указанное число length символов справа.

Функция ^ Mid(string, start[, length]) позволяет выделить из строки string подстроку длины length, начиная с позиции start.

Функции Ltrim(string), Rtrim(length), Trim(length) возвращают копию строки, из которой удалены пробелы, находящиеся в начале строки, в конце строки или в начале и в конце строки соответственно.

Функции ^ Lcase(string), UCase(string) возвращают копию строки, символы которой приведены к нижнему или к верхнему регистру.

^ 4.4 Работа с датами и временем

Для того чтобы обеспечить программисту возможность корректно работать с датами и временем, VBA предоставляет специальный тип Date, хранящий дату и время. Представление дат занимает 4 байта памяти. Целая часть хранит число дней от начальной даты, а дробная часть хранит время от полуночи. Начальной датой является 30 декабря 1899 года. При работе с данными значениями чаще всего используются специальные встроенные функции.


^ Присваивание значений


При присваивании значений типа Date следует заключать дату в специальные ограничители "#" или задавать ее как строковую константу. При задании даты в ограничителях, например #9, May, 99#, она автоматически преобразуется в стандартную форму #5/9/99#.

Пример работы с датами:

^ Public Sub WorkWithDates()

Dim dat1 As Date, dat2 As Date, dat3 As Date

dat1 = 12

dat2 = 9 / 5 / 99

dat3 = #9/5/99#

Debug.Print dat1, dat2, dat3

dat1 = "15/7/99"

dat2 = #5/9/99#

dat3 = dat3 + 100

Debug.Print dat1, dat2, dat3

If dat3 > dat2 Then

Debug.Print dat3 – dat2

Else

Debug.Print dat2 – dat3

End If

End Sub

Результаты выполнения этой программы:

11.01.1900 0:26:11 05.09.1999

15.07.1999 09.05.1999 14.12.1999

219

В первом операторе данной программы к начальной дате прибавляется 12 дней, отсюда получается 11 января 1900 года. Второй оператор вычисляется как обычное арифметическое выражение, так как выражение не заключено в ограничители. Полученное дробное число воспринимается как время от начала суток. Далее программой выполняются операции над датами – прибавление целого числа дней, сравнение дат и вычитание дат.


^ Встроенные функции работы над датами


Date возвращает текущую дату.

Time возвращает текущее время по часам компьютера.

Now возращает значение типа Variant(Date), содержащее текущую дату и время по системному календарю.

DateAdd добавляет и вычитает указанный временной интервал из значения даты:

^ DatAdd (interval, number, data)

Аргумент interval – строка, указывающая тип добавляемого временного интервала, number – число временных интервалов, на которые надо изменить дату, data – дата, к которой добавляется указанный временной интервал. Допустимые значения аргумента interval приведены в таблице 4.3.

DateDiff – определяет время, прошедшее между двумя датами:

DateDiff (interval, date1, date2[, firstdayofweek[, firstweekofyear]] )

Таблица 4.3  Возможные временные интервалы


Значение

Описание

yyyy

Год

Q

Квартал

m

Месяц

Y

День года

D

День месяца

w

День недели

ww

Неделя

H

Часы

N

Минуты

S

Секунды



Параметры имеют следующий смысл:

^ Interval задает тип временного интервала при вычислении разности между датами date1 и date2 – его возможные значения те же, что и для функции DateAdd;

date1 и date2 – две даты, разность между которыми следует вычислить;

firstdayofweek – константа, указывающая первый день недели (по умолчанию считается, что неделя начинается с воскресенья);

firstweekofyear – константа, указывающая первую неделю года (по умолчанию первой неделей считается неделя, содержащая первое января).

DateSerial – вычисляет значение даты типа Variant(Date) по ее компонентам – году, месяцу, дню:

^ DateSerial(year, month, day)

Значение каждого аргумента должно лежать в соответствующем диапазоне: 100 – 9999 для года, 1–31 для дней, 1–12 для месяцев. Можно использовать для аргументов числовые выражения для описания относительной даты.

Примеры:

DateSerial(1977–25, 10–2, 18–1)

Результат: 17.08.1952

DateSerial(Year(Now) – 3, Month(Now) – 2, Day(Now) – 1)

Результат на текущий день, например: 24.11.2000


DateValue переводит аргумент-строку в дату.

DateValue(date)


Примеры тестирования данной функции в окне отладки:

?DateValue("25.04.1997")

25.04.1997

?DateValue("04.25.1997")

25.04.1997

?DateValue("25 апреля 1997")

25.04.1997

?DateValue("25–апр–97")

25.04.1997

?DateValue("Апрель, 25, 97")

25.04.1997

?DateValue("25/04/1997")

25.04.1997

?DateValue("25.04")

25.04.2004

Day(date), Month(date), Year(date) по аргументу-дате определяют номер дня, месяца и года.

Hour(time), Minute(time), Second(time) по аргументу, который является числовым или строковым выражением и представляет время, возвращает соответственно часы, минуты и секунды в значении времени.

^ TimeSerial(hour, minute, second) вычисляет результат Variant(Date), содержащий значение времени, соответствующее указанному часу, минуте, секунде.

TimeValue(time) возвращает значение типа Variant(Date), содержащее время. Аргумент time задается строковым выражением, представляющем время от 0:00:00 (12:00:00 А.М.) до 23:59:59 (11:59:59 Р.М.)


^ 5 Операторы 5.1 Операторы как основа

VBA – операторный язык. Это значит, что его программы (модули) представляют последовательность операторов. Набор операторов VBA весьма обширен и не уступает в этом таким «большим» языкам, как Паскаль и С. Группа декларативных операторов VBA, служащих для описания объектов, с которыми работает программа (типов, переменных, констант, объектов приложений), уже рассмотрена. Операторы второй группы обеспечивают присвоение и изменение значений этих объектов; операторы третьей группы управляют ходом вычислений, четвертой – работой с каталогами и файлами и т.д. Часть операторов досталась VBA в наследство от предыдущих версий Бейсика и без них можно обойтись при написании новых программ.

При записи текста программ для упрощения чтения, отладки и модификации программы удобней каждый оператор располагать в отдельной строке текста. Следуйте правилу: «Один оператор – одна строка». Но на этой строке разрешается размещать и несколько операторов. В отличие от общепринятого символа разделения операторов «точка с запятой», в VBA символом разделения двух операторов в одной строке служит двоеточие. Заметьте, некоторые операторы, например оператор If, могут стоять лишь на первом месте в строке. И по этой причине каждый оператор, как правило, следует начинать с первой строки. Лишь иногда разумно группу операторов присваивания размещать в одной строке. Чаще возникает другая ситуация – оператор слишком длинный, и его текст не виден полностью на экране дисплея, что затрудняет чтение и понимание программы. В этом случае оператор следует продолжить в одной или нескольких строках. Чтобы продолжить (перенести) оператор на следующую строку, используется пара символов пробел-подчеркивание « _». Например,

^ MyAddress = "дом: " & Number & " улица: " & Street _

& " город: " & City

Перед оператором в строке может стоять метка – последовательность символов, начинающаяся с буквы и кончающаяся двоеточием «:». Метки можно размещать в отдельных строках перед теми операторами, которые они должны помечать. Они нужны для операторов перехода типа GoTo, использование которых считается «дурным тоном» в структурном программировании. Но иногда без меток и переходов обойтись трудно – в частности, при указании входов в обработчике ошибок в некоторых процедурах.
^ 5.2 Оператор комментария

Комментарии на исполнение программы не влияют, но необходимы как признак «хорошего стиля». Офисные программы используются многократно и не раз модернизируются в процессе жизни. Вы можете сэкономить на комментариях и написать, а затем и отладить небольшой модуль без них. Но уже через неделю никто, в том числе и Вы, не сможет понять его действие и модифицировать нужным образом. Затраченные на это усилия и время намного превзойдут «экономию». Любая строка текста программы может заканчиваться комментарием. Комментарий в VBA начинается апострофом (') и включает любой текст, расположенный в строке правее. Обычно в комментариях описываются задачи, решаемые модулями; функции, выполняемые процедурами; смысл основных переменных
еще рефераты
Еще работы по разное