Основы программирования в среде Visual Basic for Application (VBA)

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

Рубрика Программирование, компьютеры и кибернетика
Вид учебное пособие
Язык русский
Дата добавления 21.05.2009
Размер файла 1,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Устанавливает расположение рисунка внутри объекта. Допустимые значения:

- fmPictureAlignmentTopLeft (в верхнем левом углу);

- fmPictureAlignmentTopRight (в верхнем правом углу);

- fmPictureAlignmentCenter (в центре);

- fmPictureAlignmentBottomLeft (в нижнем левом углу);

- fmPictureAlignmentBottomRight (в нижнем правом углу)

PictureTiling

Допустимые значения: True (объект покрывается мозаикой из рисунка) и False (в противном случае)

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

Private Sub UserForm_Initialize()

With Image1

.PictureAlignment = fmPictureAlignmentTopLeft

.PictureSizeMode = fmPictureSizeModeZoom

.Picture = LoadPicture("c:\Face.bmp")

End With

With Image2

.PictureAlignment = fmPictureAlignmentTopLeft

.PictureSizeMode = fmPictureSizeModeStretch

.Picture = LoadPicture("с:\Face.bmp")

End With

With Image2

.PictureAlignment = fmPictureAlignmentTopLeft .PictureSizeMode = fmPictureSizeModeStretch

Picture = LoadPicture("c:\Face.bmp")

End With

With Image3

.PictureAlignment = fmPictureAlignmentTopLeft .PictureSizeMode = fmPictureSizeModeClip

.Picture = LoadPicture("c:\Face.bmp")

End With

With Image4

.PictureAlignment = fmPictureAlignmentTopLeft

.PictureTiling = True

.Picture = LoadPicture("c:\Face.bmp")

End With

End Sub

Рисунок 2.22 Четыре примера размещения рисунка

2.8.12 Ссылки на ячейки и диапазоны

Элемент управления RefEdit (редактирование ссылок) создается с помощью кнопки RefEdit (рис. 2.23). Элемент управления RefEdit обычно используется для ввода ссылок на ячейки или диапазоны. Основным свойством элемента управления RefEdit является Text, возвращающее строку, введенную в поле ввода этого элемента управления.

Рисунок 2.23 Элемент управления RefEdit в форме

2.8.13 Набор страниц

Элемент управления MultiPage (набор страниц) создается с помощью кнопки Набор страниц (MultiPage) (рис. 2.24). Этот элемент управления реализует многостраничные диалоговые окна. Заголовки страниц отображаются на вкладках. Переход от страницы к странице осуществляется выбором вкладки посредством щелчка кнопкой мыши.

Рисунок 2.24 Набор страниц в форме

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

Объект MultiPage содержит в себе семейство Pages, являющееся набором всех страниц, входящих в этот объект.

Перечислим свойства объекта MultiPage.

Value и

BoundValue

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

MultiRow

Допустимые значения: True (если ярлыки не помещаются в одну строку, то они выводятся в несколько строк) и False (если ярлыки не помещаются в одну строку, то появляется полоса прокрутки, позволяющая переходить от страницы к странице)

Selectedltem

Возвращает выбранную страницу

Семейство Pages, содержащее все страницы, входящие в объект MultiPage, имеет единственное свойство Count, возвращающее число элементов семейства. Кроме того, у семейства Pages имеются следующие методы.

Add

Создает новую страницу. Синтаксис:

Set Object = object.Add( [ Name [, Caption [, index]]])

object - семейство Pages

Name - имя страницы

Сaption - текст, отображаемый на ярлыке страницы

index - номер страницы, нумерация страниц производится с 0

Clear

Удаляет все страницы из семейства Pages

Remove

Удаляет страницу из семейства Pages

Item

Возвращает страницу со специфицированным индексом.

Синтаксис: Set Object = object.Item(collectionindex)

2.8.14 Набор вкладок

Элемент управления TabStrip (набор вкладок) создается с помощью кнопки Набор вкладок (TabStrip) (рис. 2.25). Он позволяет создать несколько вкладок в диалоговом окне. Объект TabStrip содержит в себе семейство Tabs, представляющее собой набор всех вкладок. Объект TabStrip и семейство Tabs обладают теми же свойствами и методами, что и объект MultiPage и семейство Pages.

Рисунок 2.25 Набор страниц в форме

2.9 Последовательность выбора элементов управления

Последовательность перехода от одного элемента управления к другому определяет порядок, в соответствии с которым активизируются эти элементы управления при нажатии клавиши <Таb>. Для установки последовательности перехода в пользовательской форме необходимо: 1 Находясь в редакторе Visual Basic выбрать команду Вид, Последовательность перехода (View, Tab Order). 2 В появившемся диалоговом окне Последовательность перехода (Tab Order) с помощью клавиш Вниз (Move Down) и Вверх (Move Up) изменить порядок выделенного элемента управления в зависимости от потребности (рис. 2.26).

Рисунок 2.26 Диалоговое окно Последовательность перехода

Другим способом задания последовательности перехода является определение свойства TabIndex элемента управления. При этом надо помнить, что начальному элементу соответствует значение свойства TabIndex, равное 0, второму - 1, третьему - 2 и т. д.

2.10 Диалоговые окна

2.10.1 Инициализация и отображение диалогового окна

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

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

Рисунок 2.27 Диалоговое окно Периодических выплат

Private Sub UserForm_Initialize()

' Процедура инициализации и активизации диалогового окна`

' Первоначальный выбор переключателя Гистограмма

OptionButton1.Value = True

' Назначение клавише <Enter> функции кнопки Вычислить

With CommandButton1

.Default = True

.ControlTipText = "Вычисление процентных ставок" & Chr(13) & _

"составление отчета на рабочем листе"

End With

CommandButton2.ControlTipText = "Кнопка отмены"

On Error GoTo Сообщение0

With Image1

' Установка такого же цвета границы элемента управления Рисунок,

' как и его фон

.BorderColor = .BackColor

' Загрузка рисунка, соответствующего переключателю Гистограмма

.Picture = LoadPicture("VBA3_F1.BMP") End With

UserForm1.Show

Exit Sub

' В случае отсутствия файла с рисунком отображается сообщение

Сообщение0:

If Err.Number Then

MsgBox "Нет графического файла “VBA3_F1.BMP." & Chr(13) &

"Работаем без картинки", vbCritical, "Выплаты"

End If

Resume Next

End Sub

2.10.2 Закрытие диалогового окна

В VBA диалоговые окна работают в режиме модального диалога. Это означает, что пользователь, прежде чем перейти к выполнению действий, не связанных с текущим активным диалоговым окном, должен его закрыть. Закрытие диалогового окна производится методом Hide. Следующая процедура является примером процедуры закрытия диалогового окна. Эта процедура активизируется при нажатии кнопки CommandButton2 диалогового окна UserForm1 и выполняет только одну инструкцию, осуществляющую закрытие этого диалогового окна.

Private Sub CommandButton2_Click()

` Процедура закрытия диалогового окна

UserForm1.Hide

End Sub

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

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

VBA позволяет отображать программно на экране встроенные диалоговые окна в Excel наряду с пользовательскими диалоговыми окнами. Все встроенные диалоговые окна в Excel образуют семейство Dialogs, индекс которого специфицирует активизируемое диалоговое окно. Отображение встроенного диалогового окна на экране осуществляется методом Show. Например, следующая процедура при нажатии кнопки активизирует диалоговое окно Открытие документа (Open) (рис. 2.28).

Private Sub CommandButton1_Click()

Application.Dialogs(xlDialogOpen).Show

End Sub

Рисунок 2.28 Диалоговое окно Открытие документа

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

XlDialogFindFile

Диалоговое окно Открытие документа (Open) при поиске файла

xlDialogPivotTableWizard

Диалоговое окно Мастер сводных таблиц (Pivot Table Wizard)

Wizard)

xlDialogSaveAs

Диалоговое окно Сохранить как (Save as)

xlDialogSaveWorkbook

Диалоговое окно Сохранить (Save)

xlDialogPrint

Диалоговое окно Печать (Print)

3. Типы данных, переменные и константы

3.1 Типы данных

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

В VBA имеются следующие основные типы данных:

Тип данных

Размер (байт)

Диапазон значений

Byte (байт)

1

От 0 до 255

Boolean (логический)

2

True или False

Integer (целое число)

2

От -32 768 до 32 767

Long (длинное целое число)

4

От -2 147 483 648 до 2 147 483 647

Single (число с плавающей запятой обычной точности)

4

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

Double (число с плавающей запятой двойной точности)

8

От -1,79769313486232Е308 до

-4,94065645841247Е-324 для отрицательных значений;

от 4,94065645841247Е-324 до 9769313486232Е308 для положительных значений

Decimal (масштабируемое целое число)

14

+/-79228162514264337593543950335 с 28 знаками справа от запятой;

минимальное ненулевое значение имеет вид +/-0,0000000000000000000000000001

Date (даты и время)

8

От 1 января 100 г. до 31 декабря 9999г.

Object (объект)

4

Любой указатель объекта

String (строка переменной длины)

10 + длина

строки

От 0 до приблизительно 2 миллиардов

String (строка постоянной длины)

длина

строки

От 1 до приблизительно 65 400

Variant (числовые подтипы)

16

Любое числовое значение вплоть до границ диапазона для типа Double

Variant (строковые подтипы)

22+длина строки

От 0 до приблизительно 2 миллиардов

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

Объём определяется элементами

Диапазон каждого элемента определяется его типом данных

3.2 Описание переменных

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

Синтаксис:

Dim [WithEvents] ИмяПеременной[([Индексы]]] [As [New] Тип] __[, [WithEvents] ИмяПеременной [([Индексы] I ] [As [New] Тип]] . . .

Аргументы:

WithEvents

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

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

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

Индексы

Размерности переменной массива; допускается описание до 60 размерностей. Для задания аргумента Индексы используется следующий синтаксис:

[Нижний То] Верхний [, [Нижний То] Верхний] ...

Если нижний индекс не задан явно, нижняя граница массива определяется инструкцией option Base- Если отсутствует инструкция option Base, нижняя граница массива равняется нулю

New

Ключёвое слово, включающее возможность неявного создания объекта. Если указано ключевое слово New при описании объектной переменной, новый экземпляр объекта создается при первой ссылке на него, поэтому нет необходимости присваивать ссылку на объект с помощью инструкции Set

Тип

Тип данных переменной. Для каждой описываемой переменной следует использовать отдельное предложение As тип

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

Инструкция Dim предназначена для описания типа данных переменной на уровне модуля или процедуры. Например, следующая инструкция описывает переменную с типом Integer.

Dim N As Integer

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

Dim X Аs New Worksheet

Если при описании объектной переменной не используется ключевое слово New то для использования объекта, на который ссылается переменная, существующий объект должен быть присвоен переменной с помощью инструкции Set.

Если тип данных или тип объекта не задан, и в модуле отсутствует инструкция DefТип, по умолчанию переменная получает тип Variant. Для обязательного описания всех переменных надо поместить в начале модуля инструкцию Оption Explicit. Использование этой инструкции полезно при отладке программ, т. к. она позволяет легче отслеживать возможную путаницу в именах при наборе программы.

3.2.1 Допустимые имена

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

1. Длина имени не должна превышать 255 символов.

2. Имя не может содержать точек, пробелов и следующих символов: % , & , !, #.©, $.

3. Имя может содержать любую комбинацию букв, цифр и символов, начинающуюся с буквы.

4. Имена должны быть уникальны внутри области, в которой они определены.

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

Хотя регистр букв (верхний или нижний) в имени не имеет значения, умелое использование его может существенно облегчить понимание содержательной стороны переменной

3.3 Константы

Константы, в отличие от переменных, не могут изменять свои значения. Использование констант делает программы легче читаемыми и позволяет проще вносить исправления отпадает необходимость многократно исправлять значения по тексту программы, т. к. достаточно ввести новое значение при определении константы. Синтаксис:

[Public | Private] Const ИмяКонстанты [As Тип] = Выражение

Аргументы:

Public

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

Private

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

ИмяКонстанты

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

Тип

Один из поддерживаемых типов данных: Byte, Boolean,

Integer, Long, Currency, Single, Double. Decimal (в настоящее время не поддерживается), Date, String или Variant. Для каждой описываемой константы следует использовать отдельное предложение as тип

Выражение

Литерал, другая константа или любое сочетание, которое включает все арифметические или логические операторы, за исключением Is

Пример:

Const ПроцентнаяСтавка As Single = 0.2

Const Фирма = "ООО Бескрайние просторы"

3.4 Комментарии

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

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

2. Временно отключают фрагменты программы при ее отладке.

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

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

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

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

Dim a As Integer

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

Dim b As String ' b - строковая переменная

4. Операции VBA

В программах на VBA можно использовать стандартный набор операций над данными. Имеются три основных типа операций:

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

Отношения, применяются не только к числам, и их результатом являются логические значения, например х>у.

Логические, используются в логических выражениях и их результатом являются логические значения, например Not x And у.

Приведем операции VBA указанных и дополнительных категорий.

4.1 Математические операции

[Операнд1] + [Операнд2]

Сложение

[Операнд1] - [Операнд2]

Вычитание

- [Операнд]

Перемена знака

[Операнд1] * [Операнд2]

[Операнд1] / [Операнд2]

Умножение

Деление

[Операнд1] \ [Операнд2]

Целочисленное деление

[Операнд1] Mod [Операнд2]

Остаток от деления по модулю

[Операнд1] ^ [Операнд2]

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

4.2 Операции отношения

[Операнд1]< [Операнд2]

Меньше

[Операнд1]> [Операнд2]

Больше

[Операнд1]<= [Операнд2]

Меньше или равно

[Операнд1]>= [Операнд2]

Больше или равно

[Операнд1] <> [Операнд2]

Не равно

[Операнд1] = [Операнд2]

Равно

[Операнд1] Is [Операнд2]

Сравнение двух операндов, содержащих ссылки на объекты

[Операнд1] Like [Операнд2]

Сравнение двух строковых выражений

4.3 Логические операции

[Операнд1] And [Операнд2]

Логическое умножение

[[Операнд1] Or [Операнд2]

Логическое сложение

[Операнд1] Хоr [Операнд2]

Исключающее or (или)

Not [Операнд2]

Логическое отрицание

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

[Строка1] & [Строка2]

Сложение строк. Для сложения строк допустимо использование операции [Cтрока1 +[Строка2], но предпочтительнее, во избежание путаницы, применять операцию со знаком &

4.5 Приоритеты операций

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

Приоритет

Операция

1

Вызов функции и скобки

2

^

3

- (смена знака)

4

*, /

5

\

6

Mod

7

+, -

8

>, <, >=, <=, <>,=

9

Not

10

And

11

Or

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

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

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

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

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

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

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

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

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

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

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

Функция

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

Abs (число)

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

Atn (число)

Арктангенс

Cos (число)

Косинус

Exp (число)

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

Log (число)

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

Rnd (число)

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

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

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

Sgn (число)

Знак числа

Sin (число)

Синус

Sqr (число)

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

Tan (число)

Тангенс

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

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

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

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

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

Val (строка)

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

Str (число)

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

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

Чтобы представить числовое значение как дату, время, денежное значение или в специальном формате, следует использовать функцию Format. Возвращает значение типа Variant (String), содержащее выражение, отформатированное согласно инструкциям, заданным в описании формата. Синтаксис: Format(Выражение[, Формат[, ПервыйДеньНедели [, ПерваяНеделяГода]]])

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

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

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

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

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

0

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

#

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

.

Резервирует позицию десятичного разделителя

%

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

,

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

:

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

/

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

E+, E-, e+, e-

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

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

Функция

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

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

Boolean

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

Byte

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

Currency

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

Date

СОЫ (Выражение)

Double

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

Decimel

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

Integer

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

Long

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

Single

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

Variant

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

String

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

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

Функция

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

Asc

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

Asc(Строка)

Chr

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

Chr(Код)

Например Chr (13) - переход на новую строку, Chr(97) = "а"

Lcase

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

Синтаксис:

Lcase(Строка)

Ucase

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

Синтаксис:

Ucase(Строка)

Left

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

Синтаксис:

Left(string, length)

Аргументы:

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

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

Right

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

Синтаксис:

Right(string, length)

Аргументы:

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

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

Mid

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

Синтаксис:

Mid(string, start [, length])

Аргументы:

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

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

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

Len

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

Синтаксис:

Len(Строка)

LTrim

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

LTrim(Строка)

Rtrim

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

Синтаксис:

RTrimfСтрока)

Trim

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

Синтаксис:

Trim(Строка)

Space

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

Синтаксис:

Space(Число)

String

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

Синтаксис:

String(number,character)

Аргументы:

number - число повторений символа

character - повторяемый символ

StrComp

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

Синтаксис:

StrComp(stringl, string2 [, compare])

Аргументы:

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

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

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

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

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

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

InStr

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

Синтаксис:

InStr([start, ]stringl, string2[, compare])

Аргументы:

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

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

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

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

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

4.8 Инструкции VBA

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

Инструкции описания

Инструкции присваивания

Исполняемые инструкции

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

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

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

х = 2

х = х + 2

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

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

Set Область = Range("А1:ВЗ")

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

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

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

4.8.2 Расположение нескольких операторов на одной строке

Использование знака двоеточия позволяет разместить несколько операторов на одной строке. Таким образом, следующие две конструкции эквивалентны:

1. х = х+1 и 2. х = х+1: у = х+2

у = х+2

5. Ввод и вывод информации

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

InputBox

Выводит на экран диалоговое окно, содержащее сообщение и поле ввода, устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем возвращает значение типа string, содержащее текст, введенный в поле. Синтаксис:

InputBox (prompt [, title] [, default] [, xpos] [, ypos] [, helpfile, context])

Здесь аргументы означают:

prompt - строковое выражение, отображаемое как сообщение в диалоговом окне;

title - строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения;

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

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

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

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

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

MsgBox

Выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата. Синтаксис:

MsgBox(prompt[, buttons] [, title] [, helpfile, context])

Аргументы:

prompt - строковое выражение, отображаемое как сообщение в диалоговом окне;

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

Рассмотрим пример использования окон сообщений. В результате действия приведенной ниже процедуры CommandButton1_Click() появится диалоговое окно Пример окна ввода с полем ввода (рис. 5.1). Следуя приглашению в этом диалоговом окне, введем в поле ввода имя, например, Николай Маркович. Нажмем кнопку ОК. На экране отобразится диалоговое окно пример окна сообщения с текстом приветствия (рис. 5.2). Если пользователь не введет имя в поле ввода диалогового окна Пример окна ввода или нажмет кнопку Отмена, то компьютер выразит свое неудовлетворение действиями пользователя отображением диалогового окна Еще один пример окна сообщения (рис. 5.3).

Рисунок 5.1

Рисунок 5.2

Рисунок 5.3

Private Sub CommandButton1_Click()

' Описание переменной

Dim Name As String

' Ввод имени пользователя

Name = InputBox("Введите свое имя", "Пример окна ввода")

' Реакция программы на ввод имени пользователя

If Name <> "" Then

Response = MsgBox("Здравствуйте, " + Name, vbInformation, " ")

Else

Response = MsgBox("Вы забыли ввести свое имя! ", vbExclamation, "Еще один пример окна сообщения")

End If

End Sub

Значения аргумента buttons процедуры MsgBox, определяющие отображаемые кнопки в диалоговом окне:

Константа

Значение

Отображаются кнопки

vbOKOnly

0

vbOKCancel

1

vbAbortRetryIgnore

2

vbYesNoCancel

3

vbYesNo

4

vbRetryCancel

5

Значения аргумента buttons процедуры MsgBox, определяющие отображаемые информационные значки в диалоговом окне:

Константа

Значение

Отображаются кнопки

vbCritical

16

vbQuestion

32

vbExclamation

48

vbInformation

64

Значения аргумента buttons процедуры MsgBox, определяющие основную кнопку в диалоговом окне:

Константа

Значение

Номер основной кнопки

vbDefaultButton1

0

1

vbDefaultButton2

256

2

vbDefaultButton3

512

3

vbDefaultButton4

768

4

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

Константа

Значение

Нажатая кнопка

vbOK

I

OK

vbCancel

2

Отмена (Cancel)

vbAbort

3

Прервать (Abort)

vbRetry

4

Повторить (Retry)

vblgnore

5

Пропустить (Ignore)

vbYes

6

Да (Yes)

vbNo

7

Нет (No)

6. Реализация разветвляющихся алгоритмов в VBA

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

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

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

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

GoTo Строка

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

Оператор условного перехода. Формат:

If <Условие> Then <Операторы 1> [Else Операторы 2]

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

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

If <Условие> Then

[Операторы 1]

[Elself <Условие-n> Then

[Операторы n]

[Else

[Операторы]]

End If

Оператор выбора. Формат:

Select Case <выражение>

[Case списокВыражений-1

[операторы-1]]

[Case списокВыражений-n

[операторы-n]]

[Case Else

[операторы_еlse]]

End Select

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

Операторы_else (необязательная часть) - один или несколько операторов, выполняемых в том случае, если выражение не совпадает ни с одним из предложений Case.

Активизация подпрограммы обработки ошибок.

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

Sub InitializeMatrix(Varl, Var2, Var3, Var4)

On Error GoTo M1

Exit Sub

M1:

Resume Next

End Sub

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

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

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

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

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

В VBA имеются следующие операторы цикла

For - Next. Формат:

For <Счетчик> = <Начало> То <Конец> [Step <Шаг>] [Операторы 1]

[Exit For]

[Операторы 2] Next [<Счетчик>]

Цикл со счетчиком повторяет выполнение группы Операторов 1, пока Счетчик изменяется от Начального значения до Конечного с указанным Шагом. Если шаг не указан, то он полагается равным 1. Досрочный способ выхода из цикла предоставляет оператор Exit For.

For Each - Next. Формат:

For Each <Элемент> In <Группа>

[Операторы 1]

[Exit For]

[Операторы 2]

Next [<Элемент>]

Цикл повторяет выполнение группы Операторов 1 для каждого элемента массива или семейства.

Do Until - Loop. Формат:

Do [Until <Условие>]

[Операторы 1]

[Exit Do]

[Операторы 2] Loop

Тело цикла выполняется, пока Условие имеет значение False. Операторы 1 выполняются по крайней мере один раз, а затем проверяется условие. Досрочный способ выхода из цикла - Exit Do.

Do - Loop While. Формат:

Do

[Операторы 1]

[Exit Do]

[Операторы] Loop [While <Условие>]

Повторяет выполнение набора операторов, пока Условие имеет значение True. Сначала выполняются Операторы 1, а потом проверяется условие.

Do While - Loop. Формат:

Do [While <Условие>]

[Операторы 1]

[Exit Do]

[Операторы 2]

Loop

Цикл с «предусловием» проверяет Условие перед выполнением Операторов 1. Когда Условие становится ложным, цикл прекращает свое выполнение.

Do - Loop Until. Формат:

Do

[Операторы 1]

[Exit Do]

[Операторы 2]

Loop [Until <Условие>]

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

While - Wend. Формат:

While <Условие>

[Операторы]

Wend

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

8. Массивы

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

Dim M(3,3) As Single

Dim V(12) As Integer

Первая строка объявляет двумерный массив 33 (матрицу), состоящий из действительных чисел. Вторая строка объявляет одномерный массив (вектор) из 12 целых чисел, причем по умолчанию первый элемент массива будет V(0), а последний V(11). В этом случае говорят, что 0 - базовый индекс. Можно изменить базовый индекс, написав в начале листа модуля инструкцию Option Base 1. После этого индексы массивов M и V будут начинаться с единицы. Другим способом изменения базового индекса является использование ключевого слова Tо при объявлении массива:

Dim M(l То 3, 1 То 3) As Single

Dim V(l To 12) As Integer

Значения элементов массива задаются поэлементно. Н а п р и м е р,

Dim M(l To 2,1 То 2) As Integer

M(l,l)=2: M(1,2)=4: M(2,1)=1: В(1,2)=6

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

Например,

Dim A As Variant

А = Array{10,20,30)

В = А(2)

Динамические массивы

Иногда в процессе выполнения программы требуется изменять размер массива. В этом случае первоначально массив объявляют как динамический. Для этого при объявлении массива не указывают размерность.

Например:

Dim R() as Single

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

ReDim [Preserve] ИмяПеременной(Индексы) [As Тип]_

[. ИмяПеременной(Индексы)[As Тип]] ...

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

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

Индексы - размерности переменной массива; допускается описание до 60 размерностей. Аргумент Индексы использует следующий синтаксис:

[Нижний То] Верхний [, [Нижний То] Верхний] ...

Если нижний индекс не задан явно, нижняя граница массива определяется инструкцией Option Base. Если отсутствует инструкция Option Base, нижняя граница массива равняется нулю.

Тип - тип данных массива.

Например, установим границы массива R:

ReDim R(1 To 10)

Допустимо повторное использование инструкции ReDim для изменения числа элементов и размерностей массива.

9. Подпрограммы

9.1 Процедуры

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

Синтаксис:

[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

Приведенный ниже синтаксис описывает имя, аргументы и текст программы, составляющие тело процедуры Function. Синтаксис:

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

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

[Имя = Выражение]

[Exit Function]

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

[Имя = Выражение]

End Function

Синтаксис инструкции Function содержит те же элементы, что и Sub. Инструкция Exit Function приводит к немедленному выходу из процедуры Function. Подобно процедуре Sub, процедура Function является самостоятельной процедурой, которая может получать аргументы, выполнять последовательность инструкций и изменять значения своих аргументов. Однако в отличие от процедуры Sub, когда требуется использовать возвращаемое функцией значение, процедура Function может применяться в правой части выражения, как и любая другая встроенная функция, например, cos.

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

9.2 Переход в подпрограмму и возвращение из подпрограммы

В VBA от первоначальных версий BASIC сохранилась конструкция подпрограммы GoSub - Return, которая в настоящее время редко используется. Для полноты изложения вкратце напомним синтаксис этой инструкции. Синтаксис:

GoSub строка

строка

Return

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

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

9.3 Вызов процедуры

Вызов процедуры Sub из другой процедуры можно произвести несколькими способами.

Первый способ вызова процедуры Sub:

ИмяПроцедуры СписокФактическихПараметров

ИмяПроцедуры

Имя вызываемой процедуры

СписокФактическихПараметров

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

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

ИмяМодуля . ИмяПроцедуры СписокФактическихПараметров

Второй способ вызова процедуры sub производится с помощью инструкции Call.

ИмяПроцедуры (СписокФактическихПараметров )

Обратите внимание, что в этом случае список фактических параметров заключается в скобки. В первом способе скобки не использовались.

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

Приведенный ниже пример показывает основные способы передачи параметров в процедуры.

Dim с As Double

' с - глобальный параметр

Function F(ByVal x As Integer) As Integer

F = x^2

End Function

`Sub Assistant (ByVal a As Integer, ByVal b As Integer)

`Процедура, находящая сумму двух чисел и выводящая результат в диалоговом окне

с = а + b

MsgBoxCStr(c)

End Sub

Sub Main()

`Процедура, находящая сумму двух чисел и выводящая результат в диалоговом окне

Dim x, у As Double

` x, у - переменные, используемые в качестве фактических параметров

' Вызов процедуры с конкретными числами как фактическими параметрами

Assistant 1, 3

' Первоначальное присвоение переменным значений, с последующим вызовом процедуры

х = 1: у = 1

Assistant x, у + 2

' Использование функции как фактического параметра

х = 1: у = 3

Assistant F(x), у

`Вызов процедуры с указанием фактических параметров по имени

Assistant a:=l, b:=3

End Sub

Приведем пример процедуры с необязательными параметрами. Процедура CторонаТреугольника позволяет найти длину недостающей стороны прямоугольного треугольника, где переменные A и B отведены под длины катетов, а переменная С - под гипотенузу. Например, формула =СторонаТреугольника(;В2;С2) вычисляет катет А по введенным в ячейки В2 и С2 длинам катета В и гипотенузы С. При работе с необязательными переменными необходимо использовать функцию IsMissing, возвращающую значение True, если соответствующий аргумент не был передан в процедуру, и False в противном случае.

Function СторонаТреугольника (Optional A, Optional В, Optional С)

If Not (IsMissing(A)) And Not (IsMissing(В)) Then

СторонаТреугольника = Sqr(А^2 + В^2)

End If

If Not (IsMissing(A)) And Not (IsMissing(C)) Then

СторонаTреугольника = Sqr(С^2 - A^2)

End If

If Not (IsMissing(B)) And Not (IsMissing(C)} Then

Сторонатреугольника = Sqr (C^2 - B^2)

End If

EndFunction

Назначение значений по умолчанию необязательным параметрам

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

Function Сумма (a As Double, Optional b As Double = 8)

Сумма = a + b

End Function

Использование неопределенного количества параметров как правило, количество передаваемых параметров в процедуру совпадает с количеством определенных у этой процедуры параметров. Однако ключевое слово ParamArray предоставляет возможность ввода в процедуру произвольного, заранее не указанного числа параметров (например, как это происходит при использовании функции рабочего листа СУММ (sum)). В качестве примера приведем процедуру, которая выполняет то же действие, что и функция рабочего листа СУММ. Отличием функции СуммаПользователя от Cумм является то, что в ней в каждое поле ввода диалогового окна мастера функций можно вводить только либо число, либо ссылку на ячейку, а не на Диапазон, как при работе с функцией СУММ.

Function СуммаПользователя (ParamArray Массив ())

s = 0

For Each a In Массив

s = s + a

Next а

CуммаПользователя = s

End Function

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

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

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

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

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

9.5 Время жизни переменной

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

9.6 Рекурсивные процедуры

В VВА возможно создание рекурсивных процедур, т. е. процедур, вызывающих самих себя. Стандартным примером рекурсивной процедуры является процедура вычисления факториала, т. е. функции, возвращающей результат произведения первых n натуральных чисел, где n -- аргумент функции. Для этой функции имеется стандартное обозначение: Fact(n)=n!, где Fact (0) = 1. Ясно, что

Fact (n) = n Fact (n - 1)

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


Подобные документы

  • История создания и применение языка Basic. Стандартные математические и строковые функции. Операции и выражения языка. Блоки данных и подпрограммы. Операторы управления, цикла, ввода-вывода и преобразования информации. Константы, переменные, массивы.

    контрольная работа [2,3 M], добавлен 04.05.2015

  • Рабочая среда Visual Basic (VB) и ее основные компоненты. Ввод и вывод данных в VB. Объявление переменных и констант в программе. Создание и работа с процедурами и функциями, их виды. Организация ветвления в VB. Использование циклов в программировании.

    практическая работа [502,5 K], добавлен 26.10.2013

  • Этапы подготовки и решения задач на компьютере. Способы предоставления алгоритмов. Простые типы данных и их обработка. Основы работы с графикой и графическими операторами в Visual Basic. Организация линейной программы. Процедуры и функции в языке Паскаль.

    дипломная работа [1,9 M], добавлен 25.10.2015

  • Visual Basic for Application. Объекты и коллекции. Использование VBA в среде Access. Основы современной технологии проектирования АИС. Автоматизированное проектированиеCASE-технологий. Реинжиниринг бизнес-процессов и проектирование корпоративной ИС.

    курсовая работа [2,1 M], добавлен 22.02.2008

  • Основы языка программирвоания C++. Элементы управления в Microsoft Visual C++. Алгоритмические конструкции языка программирования Visual C++ и базовые элементы управления. Глобальные константы и переменные. Управление программой с помощью клавиатуры.

    курсовая работа [1,7 M], добавлен 08.04.2015

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

    реферат [14,5 K], добавлен 06.12.2011

  • Решение экономических задач с помощью Microsoft Excel и инструментария Visual Basic For Application. Способы запуска редактора Visual Basic, правила его синтаксиса. Создание автоматических макросов по сортировке и выборке. Создание управляющих кнопок.

    курсовая работа [852,0 K], добавлен 24.09.2010

  • Программа обработки одномерного массива средствами Visual Basic for Application (VBA) на предмет преобразования, печати, удаления, сортировки, поиска сумм, положительных, чётных элементов, их кратности и дополнения другими элементами и значениями данных.

    контрольная работа [12,3 K], добавлен 07.10.2012

  • Язык программирования Visual Basic: краткая история возникновения, значение и общая характеристика. Изучение основных свойств Visual Basic, синтаксис языка. Обзор ключевых операторов Visual Basic, пользовательские процедуры и функции данного языка.

    контрольная работа [36,4 K], добавлен 23.07.2014

  • Сумма двух разреженных полиномов, заданных ненулевыми коэффициентами и их номерами. Разработка программ на языке программирования Visual Basic for Applications. Вывод справочной информации. Операционная система Windows. Хранение двоичных данных.

    научная работа [390,2 K], добавлен 09.03.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.