Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Temy_voprosov_k_pervomu_modulyu.doc
Скачиваний:
1
Добавлен:
20.08.2019
Размер:
2.46 Mб
Скачать

ТЕХНОЛОГИЯ ОБРАБОТКИ ЭЛЕКТРОННЫХ ДОКУМЕНТОВ.

Темы вопросов к первому модулю.

Типы данных:

  • Объявление переменных

  • Имена переменных

  • Константы

  • Массивы

Массивы VBA (ч.2). Объявление и использование массивовОбъявление массивов

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

Dim VarName([Subscripts]) [As Type]

VarName - любое имя массива, использующее допустимый идентификатор имени;

Subscripts - измерение массива. Если размерность массива больше единицы, то Subscripts разделяются запятыми.

Оператор Subscripts имеет следующий синтаксис:

[lower To] upper [,[lower To] upper]..

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

upper - определяет верхний предел для индексов массива (обязательный аргумент).

Примеры правильного объявления массивов:

Dim Array_Str (1 To 10) As String - одномерный статический строковый массив, включающий 10 элементов;

Dim Array_Var() - динамический массив;

Dim Array_Mult (0 To 5, 0 To 7) As Integer - двумерный статический массив целых чисел, включающий 6*8=48 элементов.

При объявлении массивов следует помнить, что включение оператора Subscripts в объявлении массива создает статический массив с фиксированным числом элементов, пропуск оператора Subscripts в объявлении массива создает динамический массив, а установка директивы компилятора Option Base влияет на общее число элементов в массиве.

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

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

Нижеприведенный листинг показывает элементарное объявление и использование массива (в качестве элементов массива используется факториал номера элемента массива):

При помощи вложенных циклов довольно легко можно организовать инициализацию двумерного массива:

Изменение размерности динамического массива

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

Синтаксис ReDim:

ReDim [Preserve] varname(subscripts) [As Type] [, varname(subscripts) [As Type]]

varname - имя существующего массива;

subscripts - размерность существующего массива;

Type - любой тип VBA. Необходимо использовать отдельный оператор As Type для каждого массива, который определяется;

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

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

Dim Array_Month() As String - одномерный строковый динамический массив

ReDim Array_Month(29) - устанавливет размерность динамического массива равную 29 элементам

ReDim Array_Month(1 To 30) - изменяет размер массива до 30 элемента

ReDim Preserve Array_Month(1 To 31) - изменяет размер массива до 31 элемента, сохраняя содержимое

Dim Array_DBL() As Single - объявляет динамический массив

ReDim Array_DBL(2, 9) - делает массив двумерным

ReDim Array_DBL(3, 7) - изменяет размер двумерного массива

ReDim Preserve Array_DBL(1 To 3, 1 To 5) - изменяет последний размер массива, сохраняя содержимое

Обратите внимание! Можно изменять только последнее измерение многомерного массива, когда используется ключевое слово Preserve.

Встроенные функции VBA

  • Математические функции

  • Функции проверки типов

  • Функции преобразования форматов

  • Функции обработки строк

  • Функции времени и даты

Встроенные функции VBA

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

Математические функции

Функции проверки типов

Функции преобразования форматов

Функции обработки строк

Функции времени и даты

Ниже рассмотрены основные функции из этих категорий.

Математические функции

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

Функция

Возвращаемое значение

Abs (число)

Atn (число)

Cos (число)

Модуль (абсолютная величина)числа

Арктангенс

Косинус

Ехр (число)

Экспонента, т. е. результат возведения основания натурального логарифма в указанную степень

Log (число)

Натуральный логарифм

Rnd (число)

Случайное число из интервала [0,1).

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

Перед вызовом функции Rnd используйте инструкцию Randomize без аргумента

Sgn (число)

Знак числа

Sin (число)

Синус

Sqr (число)

Квадратный корень из числа

Tan (число)

Тангенс

Fix (число) И Int (число)

Обе функции, int и Fix, отбрасывают дробную часть числа и возвращают целое значение.

Различие между функциями int и Fix состоит в том, что для отрицательного значения аргумента число функция int возвращает ближайшее отрицательное целое число, меньшее либо равное указанному, a Fix — ближайшее отрицательное целое число, большее либо равное указанному

Функции проверки типов

Функции проверки типов проверяют, является ли переменная выражением специфицированного типа.

Функция

Проверка

IsArray (переменная)

IsDate (переменная)

IsEmpty (переменная)

IsError (переменная)

IsNull (переменная)

IsNumeric (переменная)

IsObject (переменная)

Является ли переменная массивом

Является ли переменная датой

Была ли переменная описана инструкцией Dim

Является ли переменная кодом ошибки

Является ли переменная пустым значением (Null)

Является ли переменная числовым значением

Является ли переменная объектом

Функции преобразования форматов

Преобразование строки в число и обратно осуществляют следующими функциями.

Val (строка)

Возвращает числа, содержащиеся в строке, как числовое значение соответствующего типа

Str (число)

Возвращает значение типа variant (String), являющееся строковым представлением числа

В качестве допустимого десятичного разделителя функция str воспринимает только точку. При наличии другого десятичного разделителя (например, запятой) для преобразования чисел в строки следует использовать функцию cstr, описанную ниже.

Чтобы представить числовое значение как дату, время, денежное значение или в специальном формате, следует использовать функцию Format.

Format

Возвращает значение типа variant (string), содержащее выражение, отформатированное согласно инструкциям, заданным в описании формата.

Синтаксис:

Format (Выражение [, Формат [, ПервыйДеньНедели [ , ПерваяНеделяГода] ] ])

Выражение — любое допустимое выражение

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

ПервыйДеньНедели — постоянная, определяющая первый день недели

ПерваяНеделяГода — постоянная, определяющая первую неделю года

При построении пользовательского числового формата возможно использование следующих символов.

0

Резервирует позицию цифрового разряда. Отображает цифру или нуль. Если у числа, представленного аргументом, есть какая-нибудь цифра в той позиции разряда, где в строке формата находится о, функция отображает эту цифру аргумента, если нет — в этой позиции отображается нуль

#

Резервирует позицию цифрового разряда. Отображает цифру или ничего не отображает. Если у числа, представленного аргументом, есть какая-нибудь цифра в той позиции разряда, где в строке формата находится #, функция отображает эту цифру аргумента, если нет — в исходной позиции не отображается ничего. Действие данного символа аналогично действию о, за исключением того, что лидирующие нули не отображаются

.

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

%

Резервирует процентное отображение числа

,

Разделитель разряда сотен от тысяч

Разделитель часов, минут и секунд в категории форматов Время (Time)

/

Разделитель дня, месяца и года в категории форматов Дата (Date)

E+, E-, e+, e-

Разделитель мантиссы и порядка в экспоненциальном формате

Кроме функций vai и str в VBA имеются следующие функции преобразования типов выражений из данного в указанный.

Функция

Тип, в который преобразуется выражение

CBool (Выражение)

Boolean

CByte (Выражение)

Byte

CCur (Выражение)

Currency

CDate (Выражение)

Date

СDbl (Выражение)

Double

CDec (Выражение)

Decimel

CInt (Выражение)

Integer

CLng (Выражение)

Long

CSng (Выражение)

Single

CVar (Выражение)

Variant

CStr (Выражение)

String

Функции обработки строк

В VBA имеются следующие функции обработки строковых выражений.

Функция

Возвращаемое выражение

ASC

Возвращает ASCII-код начальной буквы строки.

Синтаксис:

Asc (Строка)

Chr

Преобразует ASCII-код в строку.

Синтаксис:

Chr (Код)

Например

Chr ( 13 ) — переход на новую строку,

Chr ( 97 ) = "а"

Lease

Преобразует строку к нижнему регистру.

Синтаксис:

Lease (Строка)

Ucase

Преобразует строку к верхнему регистру.

Синтаксис:

Ucase (Строка)

Left

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

Синтаксис:

Left (string, length)

Аргументы:

length — число символов

string — исходная строка

Right

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

Синтаксис:

Right (string, length)

Аргументы:

length — число символов

string — исходная строка

Mid

Возвращает подстроку строки, содержащую указанное число символов.

Синтаксис:

Midlstring, start [, length])

Аргументы:

string — строковое выражение, из которого извлекается подстрока

start — позиция символа в строке string, с которого начинается нужная подстрока

length — число возвращаемых символов подстроки.

Len

Возвращает число символов строки.

Синтаксис:

Len (Строка)

Функция

Возвращаемое выражение

LTrim

Возвращает копию строки без пробелов в начале.

Синтаксис:

LTrim (Строка)

Rtrim

Возвращает копию строки без пробелов в конце.

Синтаксис:

RTrim (Строка)

Trim

Возвращает копию строки без пробелов в начале и в конце

Синтаксис:

Trim (Строка)

Space

Возвращает строку, состоящую из указанного числа пробелов.

Синтаксис:

Space (Число)

String

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

Синтаксис:

String (number, character)

Аргументы:

number — число повторений символа О character — повторяемый символ

StrComp

Возвращает результат сравнения двух строк.

Синтаксис:

StrComp(stringl, string2 [, compare])

Аргументы:

string1 и string2 — два любых строковых выражения

compare — указывает способ сравнения строк. Допустимые значения: 0 (двоичное сравнение), 1 (посимвольное сравнение без учета регистра)

Возвращаемые значения:

stringl меньше, чем string2, то -1

stringl равняется string2, то 0

stringl больше, чем string2, то 1

InStr

Возвращает позицию первого вхождения одной строки внутри другой строки.

Синтаксис:

InStr ( [start, ] stringl, st'ring2 [ , compare])

Аргументы:

start — числовое выражение, задающее позицию, с которой начинается каждый поиск. Если этот аргумент опущен, поиск начинается с первого символа строки

stringl — строковое выражение, в котором выполняется поиск

string2 — искомое строковое выражение

compare — указывает способ сравнения строк. Допустимые значения: 0 (для двоичного сравнения), 1 (посимвольное сравнение без учета регистра)

Функции времени и даты

В VBA имеются следующие, функции времени и даты.

Функция

Возвращаемое значение

Date

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

Time

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

Now

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

Hour, Minute, Second

Возвращают значения типа variant (integer), содержащее целое число, которое представляет часы, минуты и секунды в значении времени.

Синтаксис:

Hour (время) Minute (время) Second (время)

время — значение времени или выражение, его определяющее В следующем примере переменной Час присваивается 16, Минута — 35 иСекунда — 17: РасчетноеВремя = #4:35:17 РМ# Час = Hour (РасчетноеВремя) Минута = Minute (РасчетноеВремя) Секунда = Second (РасчетноеВремя)

Day, Month, Year

Возвращает значение типа Variant (Integer), содержащее целое число, которое представляет день, месяц, год в значении даты. Синтаксис: Month (дата) Year (дата) Q дата —значение даты или выражение, ее определяющее

Функция

Возвращаемое значение

Weekday

Timer DateDif f

В следующем примере переменной день присваивается 17, Месяц — May, Год— I960: День Рождения = #Мау 17, 1960# День = Day (День Рождения) Месяц = Month (День Рождения) Год = Year (День Рождения) Возвращает значение типа Variant (integer) , содержащее целое число, представляющее день недели. Синтаксис: Weekday (date, [ f irstdayofweek] )

date — выражение, представляющее дату

f irstdayofweek — указывает первый день недели. Если этот аргумент опущен, подразумевается vbSunday (воскресенье). Допустимы также значения: vbMonday (понедельник), vbTuesday (вторник), vbWednesday (среда), vbThursday (четверг), vbFriday (пятница) и vbSaturday (суббота) В следующем примере переменной День Не дели присваивается 3, т. е. вторник: ДеньРождения = #Мау 17, 1960# ДеньНедели = Weekday (ДеньРождения) Возвращает значение типа Single, представляющее число секунд, прошедших после полуночи Возвращает значение типа Variant (Long) , указывающее число временных интервалов между двумя датами.

Синтаксис:

DateDif f (interval, datel, date2[, firstdayofweek [, f irstweekof year] ] )

Аргументы:

Interval — строковое выражение, указывающее тип временного интервала, который следует использовать при вычислении разности между датами datel и date2. Допустимые значения: уууу (год), q (квартал), m (месяц), у (день года), d (день месяца), w (день недели), ww (неделя), h (часы), m (минуты), s (секунды)

datel, date2 — значения типа Variant (Date). Две даты, разность между которыми следует вычислить

firstdayofweek — постоянная, указывающая первый день недели Q firstweekofyear— постоянная, указывающая первую неделю года В следующем примере переменной ПрожилМесяцевСРождения присваивается 465: ПрожилМесяцевСРождения = DateDiff ("m", #5/17/601, Now)

Функция

Возвращаемое значение

DatePart DateAdd

TimeSerial DateSerial TimeValue

Возвращает значение типа variant (Integer) , содержащее указанный компонент даты.

Синтаксис:

DatePart (interval, date [, firstdayofweek[, firstweekofyear] ] )

Возвращает значение типа Variant ( Date ) , содержащее дату, к которой добавлен указанный временной интервал.

Синтаксис:

DateAdd'(interval, number, date)

Аргументы:

Iinterval — строковое выражение, указывающее тип добавляемого временного интервала

number — числовое выражение, указывающее число временных интервалов, которое следует добавить. Оно может быть положительным (для получения более поздних дат) или от-. рицательным (для получения более ранних дат).

date — значение типа Variant (Date) или литерал даты, представляющий дату, к которой добавляется указанный временной интервал

В следующем примере переменной день присваивается 03/17/63-: День = DateAdd ("m", 34, |05/17/60#) Возвращает значение типа Variant (Date) , содержащее значение времени, соответствующее указанным часу, минуте и секунде.

Синтаксис:

TimeSerial (hour, minute, second)

Аргументы:

hour, minute и second — значения типа Variant ( Integer) В данном примере переменной Время присваивается 16:35:17: Время = TimeSerial (16, 35, 17)

Возвращает значение типа Variant (Date) , соответствующее указанному году, месяцу и дню. Синтаксис: DateSerial (year, month, day)

Аргументы:

year, month и day — значения типа Integer

В следующем примере переменной Дата присваивается

05/17/60: Дата = DateSerial (1960, 5, 17) Преобразует строку в формат времени

Конструкции процедурного языка

  • Оператор присвоения и инструкция Set

  • Операторы перехода

  • Операторы цикла

  • Комментарии, перенос строки

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

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

Синтаксис:

[Let] Переменная (или Постоянная или Свойство Объекта) = Выражение

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

х = 2

х = х + 2

переменной х будет присвоено 4.

Для присвоения переменной ссылки на объект применяется инструкция Set. В следующем примере инструкция Set присваивает переменной Область диапазон А1:B3:

Set Область = Range("Al:B3")

В общем случае инструкция set имеет следующий синтаксис:

Set объектнаяПеременная = {[New] объектноеВыражение | Nothing}

ключевое слово New используется при создании нового экземпляра класса;

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

Перенос строки

Расположение символов (пробел) + (Знак подчеркивания) в конце строки обеспечивает то, что последующая строка является продолжением предыдущей. При этом надо помнить, что:

Нельзя разбивать переносом строковые константы

Допустимо не более семи продолжений одной и той же строки

Сама строка не может состоять более, чем из 1024 символов

В следующем примере первая из конструкций является разбиением второй на две строки:

у = sin(Application.Pi()*х) + (1 + х)^(1/2)/(1 + х^2)

у = Sin (Application. Pi ()*x) + (1 + х)^(1/2)/(1 + х^2)

Комментарии

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

Делают программу легко читаемой, поясняя смысл программных кодов и алгоритма.

Временно отключают фрагменты программы при ее отладке. В языке VBA существуют два способа ввода комментариев:

Применение апострофа (')• Его можно ставить в любом месте строки. При этом все символы, начиная от апострофа до конца строки, будут восприниматься компилятором как комментарий.

Применение зарезервированного слова Rem вместо апострофа.

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

Dim a As Integer

'

' а — целая переменная

'

Dim b As String

'

b — строковая переменная

Операторы перехода и выбора

Перечислим операторы перехода и выбора VBA.

Оператор

Действие

GoTo

If Then Else

Select Case

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

Синтаксис:

GoTo Строка

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

Синтаксис:

If Условие Then [Инструкции] [Else Инструкции else]

Если Условие принимает значение True, то выполняется инструкция (или инструкции) после Then, если False, то выполняется инструкция (или инструкции) после Else. Ветвь Else является необязательной.

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

If Условие Then [Инструкции]

[Elself Условие-n Then [Инструкции

elseif ] . . . [Else [Инструкции else] ] End If Оператор выбора. Синтаксис: Select Case выражение [Case списокВыражений-1 [ инструкции- 1] ]

[Case списокВыражений-n [инструкции-п] ] [Case Else [инструкции else] ]

End Select

Оператор

Действие

инструкции-n (необязательная часть) - одна или несколько инструкций, выполняемых в том случае, если выражение совпадает с любым компонентом списка список-Выражений-n инструкции else (необязательная часть) - одна или несколько инструкций, выполняемых в том случае, если выражение не совпадает ни с одним из предложений Case

On Error GoTo строка

Активизирует подпрограмму обработки ошибок, начало которой определяется обязательным аргументом строка, значением последнего может быть любая метка строки или номер строки. Для того чтобы предотвратить выполнение программы обработки ошибок в тех случаях, когда ошибка не возникла, необходимо помещать соответствующую инструкцию Exit Sub, Exit Function или Exit Property сразу после подпрограммы обработки ошибки, как в следующем примере:

Sub InitializeMatrix (Varl, Var2, Var3, Var4) On Error GoTo ОбработкаОшибок

Exit Sub ОбработкаОшибок :

Resume Next .

End Sub

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

On Error Resume Next

Указывает, что при возникновении ошибки происходит передача управления на инструкцию, непосредственно следующую за инструкцией, вызвавшей ошибку

On Error GoTo 0

Отключает любой активизированный обработчик ошибок в текущей процедуре

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

Перечислим операторы повтора VBA.

Оператор

Действие

For — Next

Синтаксис:

For Счетчик = Начало То Конец [Step Шаг] [Инструкции]

For Each - Next Do Until — Loop

Do — Loop While Do While — Loop

[Exit For] [Инструкции] Next [Счетчик] Повторяет выполнение группы инструкций, пока Счетчик изменяется от начального значения до конечного с указанным шагом. Если Шаг не указан, то он полагается равным 1.

Альтернативный способ выхода из цикла предоставляет инструкция Exit For

Синтаксис:

For Each Элемент

In Группа [Инструкции] [Exit For] [Инструкции]

Next [Элемент]

Повторяет выполнение группы инструкций для каждого элемента массива или семейства. Альтернативный способ выхода из цикла предоставляет инструкция Exit For

Синтаксис:

Do [While Условие] [Инструкции] [Exit Do] [Инструкции] Loop

Повторяет выполнение набора инструкций, пока условие имеет значение True. Условие проверяется после выполнения инструкции по крайней мере один раз. Альтернативный способ выхода из цикла предоставляет инструкция Exit Do

Синтаксис:

Do [Инструкции] [Exit Do] [Инструкции] Loop [While Условие]

Повторяет выполнение набора инструкций, пока условие имеет значение True. Сначала выполняется инструкция, а потом проверяется условие. Альтернативный способ выхода из цикла предоставляет инструкция Exit Do

Синтаксис:

Do [While Условие] [Инструкции] [Exit Do]

Оператор

Действие

Do — Loop Until While — Wend

[Инструкции] Loop Повторяет выполнение набора инструкций, пока условие не примет значение True. Условие проверяется после выполнения инструкции по крайней мере один раз. Альтернативный способ выхода из цикла предоставляет инструкция Exit Do

Синтаксис:

Do [Инструкции] [Exit Do] [Инструкции] Loop [While Условие]

Повторяет выполнение набора инструкций, пока условие не примет значение True. Сначала выполняется инструкция, а потом проверяется условие. Альтернативный способ выхода из цикла предоставляет инструкция Exit Do

Синтаксис:

While Условие [Инструкции] Wend

Выполняет последовательность инструкций, пока заданное условие имеет значение True

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

  • Синтаксис, элементы описания

  • Синтаксис элемента СписокАргументов

  • Область определения переменной

Область определения переменной

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

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

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

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

Процедура

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

Синтаксис:

[Private | Public] [Static] Sub Имя [(СписокАргументов)] [Инструкции]

[Exit Sub] [Инструкции]

End, Sub

Элементы описания:

Public

Указывает, что процедура Sub доступна для всех других процедур во всех модулях

Private

Указывает, что процедура sub доступна для других процедур только того модуля, в котором она описана

Static

Указывает, что локальные переменные процедуры sub сохраняются в промежутках времени между вызовами этой процедуры

Имя

Имя процедуры Sub, удовлетворяющее стандартным правилам именования переменных

СписокАргументов

Список переменных, представляющий аргументы, которые передаются в процедуру Sub при ее вызове. Имена переменных разделяются запятой

Инструкции

Любая группа инструкций, выполняемых в процедуре

Sub

Инструкция Exit sub приводит к немедленному выходу из процедуры sub.

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

[Optional] [ByVal | ByRef] [ParamArray] имяПеременной[( )]

[As тип] [= поУмолчанию]

Optional

Ключевое слово, указывающее, что аргумент не является обязательным. При использовании этого элемента все последующие аргументы, которые содержатся в списке СписокАргументов, также должны быть необязательными и описаны с помощью ключевого слова optional. Все аргументы, описанные как Optional, должны иметь тип variant. He допускается использование ключевого слова Optional для любого из аргументов, если используется ключевое слово ParamArray

ByVal

Указывает, что этот аргумент передается по значению

ByRef

Указывает, что этот аргумент передается по ссылке. Описание ByRef используется в VBA по умолчанию

ParamArray

Используется только в качестве последнего элемента в списке СписокАргументов для указания, что конечным аргументом является описанный как Optional массив значений типа variant. Ключевое слово paramArray позволяет задавать произвольное количество аргументов. Оно не может быть использовано со словами Byval, ByRef или Optional

имяПеременной

Имя переменной, удовлетворяющее стандартным правилам именования переменных

тип

Тип данных аргумента, переданного в процедуру; поддерживаются типы Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String (только строки

переменной длины), object, variant. Если отсутствует ключевое слово Optional, могут быть также указаны определяемый пользователем тип или объектный тип

поУмолчанию

Любая константа или выражение, дающее константу. Используется только вместе с параметром optional. Если указан тип object, единственным значением по умолчанию может быть значение Nothing

Объекты и семейства

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

  • Методы

  • Свойства

  • События

Структура редактора VBA

  • Окно проекта

  • Окно для редактирования кода

  • Окно редактирования форм (UserForm)

  • Окно свойств

  • Окно Просмотр объектов (Object Browser)

Окно Project служит для навигации по проекту (рис. 3.1.).

Рис. 3.1. Окно Project

Каждый открытый документ представляет собой отдельный проект. На рис. 3.1. вы можете видеть окно Project для только что созданного документа MS Word. В проект добавлена форма.

Проект имеет иерархическую структуру. Так, в разделе Microsoft Word Objects (Объекты Microsoft Word) мы можем видеть объект ThisDocument (Этот документ), то есть документ, который мы создали. В разделе Forms (Формы) мы можем видеть объект UserForm1 — только что вставленную в проект форму.

Чтобы отобразить объект, достаточно сделать по нему двойной щелчок или нажать на кнопку View Object (вторая слева в верхней части окна Project). Чтобы просмотреть код объекта надо нажать на кнопку View Code (крайняя левая кнопка).

Щелкнув правой кнопкой мыши по названию проекта, можно увидеть его контекстное меню. Это меню содержит наиболее часто используемые команды для работы с проектами. В частности, особый интерес представляет команда Project Properties (Свойства проекта).

В окне Project Properties обратите внимание на вкладку Protection (Защита). Она позволяет защитить проект от просмотра и закрыть его паролем.

Для защиты проекта от просмотра установите галочку в поле Lock project for viewing (Закрыть проект от просмотра), для закрытия проекта паролем, введите в поля Password (Пароль) и Confirm password (Подтвердить пароль) пароль.

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

Еще одна полезная возможность, связанная с управлением проектами – подписывание проектов.

Прежде чем подписать проект, нужно создать цифровой сертификат для проектов VBA. Чтобы создать его, пройдите по пути Пуск • Все программы • Microsoft Office • Microsoft Office Tools • Digital Certificate for VBA Projects. Введите в появившемся окне имя для сертификата.

Чтобы теперь подписать проект, выделите его в окне Project и воспользуйтесь командой Tools • Digital Signature. В появившемся окне нажмите на кнопку Выбрать — появится окно для выбора сертификата. Выберите из этого окна интересующий вас сертификат. В нашем случае здесь присутствует лишь один, заранее созданный, сертификат. Вот как выглядит окно цифровой подписи после завершения выбора (рис. 3.2.)

Рис. 3.2. Цифровая подпись проектов

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

Это позволит, с одной стороны, не отвлекаться на постоянные запросы системы безопасности, а с другой — не понижать безопасность системы, разрешая выполнение всех макросов.

Теперь займемся работой с формами и элементами управления

3.3. Формы и элементы управления

03-01-Формы и элементы управления.docm — пример п. 3.3. — 3.6

Создайте новый документ Microsoft Word и откройте редактор VBA. Вставьте в проект новую форму командой Insert • User Form (Вставка • Форма). Вот что должно получиться (рис. 3.3.).

увеличить изображение

Рис. 3.3. Новая форма в окне редактора VBA

Как видите, форма — это пустая заготовка будущего диалогового окна вашего приложения.

По краям новой формы вы можете видеть маркеры выделения. С их помощью можно настраивать ее размеры.

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

Окно Toolbox (Элементы управления) содержит элементы управления, которые можно добавлять на форму. Элементы управления — это все то, что служит для управления работой программ. Например: кнопки, поля ввода, полосы прокрутки и так далее.

Для того, чтобы добавить элемент управления на форму, нажмите в окне Toolbox кнопку с изображением этого элемента и выделите мышью ту область на форме, которую он должен занять

Нажмем на кнопку Toolbox'а с изображением кнопки и добавим новую кнопку на форму. Вот, что у нас получилось (рис. 3.4.).

увеличить изображение

Рис. 3.4. Кнопка, добавленная на форму

Вокруг кнопки вы можете видеть маркеры выделения, которые служат для изменения ее размера. "Схватив" элемент управления мышью, вы можете перемещать его по форме.

3.4. Окно Properties — управление свойствами

Выделите кнопку и посмотрите на окно Properties. Теперь в нем отображаются ее свойства.

Свойства элементов управления могут быть отображены в двух разных представлениях. Первое – это алфавитный список (вкладка Alphabetic) второе – отображение по категориям (Categorized). Начинающим обычно удобнее пользоваться видом свойств объекта по категориям (рис. 3.5.). Объединение сходных свойств в группы позволяет легче разбираться с их предназначением.

Рис. 3.5. Вид свойств кнопки по категориям

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

Appearance (Внешний вид) — отвечает за отображение объекта, за надписи на нем, за его имя.

Behavior (Поведение) — отвечает за поведение объекта. Например, за отображение многострочного текста.

Font (Шрифт) — содержит свойство, отвечающее за шрифт, которым сделаны надписи на объекте.

Misc (Разное) — различные настройки. Например — настройки указателя мыши, когда он будет находиться над объектом.

Picture (Изображение) — информация об изображении, которое может отображаться на объекте.

Position (Расположение) — определяет размер и положение объекта.

У форм есть группа свойств Scrolling (Скроллинг) — свойства этой группы управляют прокруткой формы.

Давайте рассмотрим свойства, общие для практически всех объектов — форм, различных элементов управления.

Объект Application

  • Основные свойства объекта Application –Active… ,Caption

  • Методы объекта Application – Run, OnRepeat и OnUndo, Quit

  • События объекта ApplicationNewWorkbook, Workbook…

Объект Application (приложение) является главным в иерархии объектов Excel и представляет само приложение Excel. Он имеет более 120 свойств и 40 методов. Эти свойства и методы предназначены для установки общих параметров приложения Excel. Кроме того, объект Application позволяет вызывать более 400 встроенных функций рабочего листа при помощи конструкции вида: Application.ФункцияРабочегоЛиста (Аргументы)

Например:

Application. Pi ()

Вычисление числа п

Application. Pmt (Аргументы)

Определение постоянных периодических платежей при постоянной процентной ставке с помощью функции ППЛАТ (РМТ)

Application. Sum (Аргументы)

Нахождение суммы значений из ячеек диапазона

Свойства объекта Application

Свойства

Выполняемые действия и допустимые значения

ActiveWorkbook,

ActiveSheet,

ActiveCell,

ActiveChart,

ActiveDialog,

Возвращают активный объект: рабочую книгу, лист, ячейку, диаграмму, диалоговое окно. Свойство ActiveCell содержится в ActiveSheet, а свойства ActiveSheet, ActiveChart и ActiveDialog в ActiveWorkbook.

В следующем примере в активной ячейке устанавливается полужирный шрифт и в нее вводится строка текста Отчет за май:

With ActiveCell

.Font. Bold = True

.Value = «Отчет за май»

End With

ThisWorkbook

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

Calculation

Устанавливает режим вычислений.

Допустимые значения:

XlCalculationAutomatic (автоматический режим)

XlCalculationManual (вычисления выполняются вручную)

XlCalculationSemiAutomatic (автоматический режим, не распространяется на таблицы)

Caption

Возвращает текст в строке имени главного окна Excel. Установка свойства равным Empty возвращает заголовок, используемый по умолчанию.

В следующем примере первая инструкция устанавливает в качестве заголовка окна приложения текст Отчет за 1999 год, а вторая возвращает имя окна, используемое по умолчанию, т. е. Microsoft Excel:

Application. Caption = «Отчет за 1999 год»

Application. Caption = Empty

DisplayAlerts

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

Допустимые значения:

True (отображаются встроенные предупреждения о работе программы)

False (предупреждения не отображаются)

DisplayFormulaBar

Устанавливает вывод строки формул.

Допустимые значения:

True (строка формул выводится в окне Excel)

False (строка формул не выводится).

В данном ниже примере установлен режим, при котором строка формул не будет выводиться в окне Excel:

Application. DisplayFormulaBar = False

DisplayScrollBars

Установка показа полосы прокрутки

Допустимые значения:

True (полосы прокрутки видны в окне Excel)

False (полосы прокрутки не отображаются).

Например отключаем полосу прокрутки

Application. DisplayScrollBars = False

DisplayStatusBar

Установка показ строки состояния

Допустимые значения:

True (строка состояния видна в окне Excel)

False (строка состояния не видна).

Например строка состояния не будет выводиться в окне Excel

Application. DisplayStatusBar = True

EnableCancelKey

Определяет действие при нажатии комбинации клавиш <Ctrl>+<Break>, используемой для прерывания выполнения процедуры.

Допустимые значения:

XlDisabled (прерывания программы запрещено)

Xllnterrupt (прерывание процедуры разрешено)

lErrorHandler (прерывание воспринимается как ошибка)

Height

Высота окна приложения в пунктах

Width

Ширина окна приложения в пунктах

Left

Расстояние в пунктах от левой границы окна приложения до левого края экрана

Right

Расстояние в пунктах от правой границы окна приложения до правого края экрана

Top

Расстояние в пунктах от верхней границы окна приложения до верхнего края экрана

ScreenUpdating

Устанавливает обновление изображений

Допустимые значения:

True (изображение обновляется во время выполнения программы)

False (изображение не обновляется).

Задание False в качестве значения свойства ускоряет выполнение процедуры. В конце процедуры свойству ScreenUpdating необходимо присвоить значение True

StatusBar

Выводит заданный текст в строке состояния.

Выполнение приведенного ниже примера позволит вывести текст Ввод данных… в строке состояния:

Application. DisplayStatusBar = True

Application. StatusBar = «Ввод данных…“

Version

Возвращает номер текущей версии Excel.

Применяется для проверки того, что приложение используется в корректной версии.

Например:

If Application. Version о “8.0» Then Exit Sub

WindowState

Устанавливает размер окна.

Допустимые значения:

xlMaximized (максимальный)

xlMinimized (минимальный)

xlNormal (нормальный)

Например устанавливается максимальный размер окна

Application. WindowState = xlMaximized

Методы объекта Application

Методы

Выполняемые действия

Calculate

Вызывает принудительное вычисление во всех открытых рабочих книгах.

Например:

Application. Calculate

Run

Запускает на выполнение подпрограмму или макрос.

Run (Macro, Argl, Arg2, …)

Macro — строка с именем макроса

Arg1, Arg2, … — аргументы передаваемые макррсу

Например запускает макрос Расчет

Application. Run Macro:= «Расчет“

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]