Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Общие сведения о языке VBA.doc
Скачиваний:
30
Добавлен:
19.05.2015
Размер:
100.35 Кб
Скачать

3. Синтаксис процедуры и функции

Процедуры − это самые важные функциональные блоки языка VBA. В VBA вы можете выполнить только тот программный код, который содержится в какой-либо процедуре (обычной в стандартном модуле, событийной для элемента управления на форме и т.п.).

В VBA предусмотрены следующие типы процедур:

- процедура типа Sub (подпрограмма) − универсальная процедура для выполнения каких-либо действий. Макрос в VBA − это процедура типа Sub, не имеющая параметров. Только макросы можно вызывать по имени из редактора VBA или из приложения MS Office. Все другие процедуры нужно вызывать либо из других процедур, либо специальными способами;

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

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

Синтаксис процедуры

Sub ИмяПроцедуры()

Dim <имя_переменной_1> As <тип_переменной>

. . . . . . . . . . . . . . . . . . . . . .

Тело процедуры

End Sub

Синтаксис функции

Function ИмяФункции(<переменные> As<тип_переменной>)

Тело функции

ИмяФункции = <значение_функции>

End Function

4. Ввод и вывод данных

Рассмотрим как осуществляется ввод и вывод данных на примере табличного процессора MS Excel.

1 способ: Ввод и вывод данных с помощью диалоговых окон

Окно для ввода данных

InputBox(“текст в окне”, “заголовок окна”, “имя  вводимой переменной”)

Пример:

Sub Поцедура()

Dim x as single

Dim y as single

x = InputBox(“Введите x”, “Окно ввода”, x)

y = x ^ 2

End Sub

Окно для вывода сообщений

MsgBox(данные для вывода)

Пример:

Sub Процедура()

Dim x as single

Dim y as single

x = InputBox(“Введите x”, “Окно ввода”, x)

y = x ^ 2

MsgBox(y)

End Sub

2 способ: Ввод и вывод данных из ячеек таблицы MS Excel осуществляется с помощью команды

Range(“имя ячейки”).Value

Пример:

Sub Процедура()

Dim x as single

Dim y as single

x = Range(“A1”).Value

y = x ^ 2

Range(“B1”).Value = y

End Sub

5 Операторы

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

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

Комментарии не влияют на исполнения программ. Они необходимы для пояснения исходных текстов программ.

Оператором комментария является одинарная кавычка «‘».

Комментарий может располагаться на отдельной строке или в конце строки.

Пример:

Sub Первая процедура ()

Раздел описания переменных

Dim y as single,

Dim n as byte

Тело процедуры

End Sub

Условный оператор

If … Then …Else … End If

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

Синтаксис:

If <условие > Then

<операторы 1>

Else

<операторы 2>

End If

Работа оператора

Вначале проверяется условие, идущее после ключевого слова If. Потом если условие истинно, то выполняется группа <операторов 1>, идущая после ключевого слова Then, если условие ложно, то выполняется группа <операторов 2>, идущая после ключевого слова Else.

Пример:

x = 4

If x>1 then

y = x ^ 2

Else

y = x + 15

End if

В результате выполнения оператора If y примет значение 16, т.к. условие 4 > 1 является истинным.

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

Цикл ForNext

Позволяет повторять группу операторов заданное число раз.

Синтаксис:

For CчетчикЦикла = начало TO конец [Step шаг]

Тело цикла

Next СчетчикЦикла

Описание и работа оператора

СчетчикЦикла – числовая переменная. В начале выполнения цикла она принимает значение, задаваемое числовым выражением начало.

Числовое выражение конец задает заключительное значение счетчика цикла. Оно задается в начале выполнения цикла и не меняется в течение его выполнения.

Числовое выражение шаг не обязательно. Его значение также определяется в начале цикла и прибавляется к счетчику цикла всякий раз, когда завершается выполнения тела цикла и вычисления достигают строки next. Если шаг цикла не указан, то его значение считается равным 1.

Тело цикла – это последовательность операторов, которая будет выполнена заданное число раз.

Цикл завершится, когда счетчик цикла станет больше значения конец.

Пример:

s=0

For i = 1 To 3

s = s+ i

Next i

Начальное значение счетчика равно 1, конечное значение равно 3, шаг равен 1, следовательно, операторы тела цикла выполнятся 3 раза. После выполнения этого оператора переменная S примет значение S=1+2+3=6.

Цикл Do WhileLoop

Синтаксис:

Do While <условие>

Тело цикла

Loop

Описание и работа оператора

Повторяет блок операторов, пока заданное условие не станет ложным (или пока условие является истинным).

Условие – это числовое или строковое выражение, принимающее значение Истина (1) или Ложь (0).

Тело цикла – это последовательность операторов, которая выполняется пока условие остается истинным.

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

Пример:

s = 0

i = 1

Do While i<=3

s =s + i

i = i + 1

Loop

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

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

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

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

Atn(число) арктангенс угла в радианах

Cos(число) косинус угла в радианах

Exp(число) Экспонента ex

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

Sin(число) синус угла в радианах

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

Tan(число) тангенс угла в радианах

число1 mod число2 Остаток от деления числа1 на число2

число1 \ число2 Целая часть от деления числа1 на число2

число  (3,14159265) Dim Pi As Double

Pi = 4 * Atn(1)

Функции преобразования данных

Str(значение) – преобразует числовое значение в строку. Она возвращает значение типа Variant, содержащее текстовое представление числа.

Val(строка) – преобразует строку в ее числовой эквивалент. Функция начинает с первого символа и движется по строке до тех пор, пока не будет найден нечисловой символ.

Пример

Val("55 23-я улица") – возвращает значение 5523

Val("–1.12") – возвращает значение –1.12

Val("А123") – возвращает значение 0

Chr (код) – возвращает символ, который нельзя ввести с клавиатуры, который соответствует конкретному числовому коду таблицы ANSI.

Пример

Chr(9) – табуляция.

Chr(10) – смещение на одну строку.

Chr(13) – возврат коретки.

Chr(13)+Chr(10) – возврат коретки + смещение на одну строку.

Перечисленные функции далеко не полностью обеспечивают решения задач возникающих в практическом использовании языка VBA. Для этой цели можно использовать встроенные функции MS Excel с помощью инструкции <переменная> = Application.(встроенная функция Excel).

Например, нужно вычислить среднее значение данных находящихся в диапазоне ячеек А1: А6.

Среднее = Application.Average(A1:A6).

11