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

Основы программирования на vba

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

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

Различают следующие типы процедур:

  • процедуры обработки событий;

  • процедуры макросов;

  • процедуры пользователя.

Процедуры обработки событий связаны с каким-либо объектом и имеют следующий синтаксис:

Private Sub ИмяОбъекта_Событие()

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

End Sub

где Private – ключевое слово, определяющее область видимости процедуры (в пределах данной формы, рабочего листа);

Sub - ключевое слово, определяющее тип подпрограммы - процедуры;

ИмяОбъекта – имя объекта, с которым связывается процедура;

Событие – вид обрабатываемого события;

Тело процедуры - программный код процедуры;

End Sub – ключевые слова, указывающие на конец процедуры.

Процедура такого типа вызывается тогда, когда происходит соответствующее событие. Например, процедура обработки события «Щелчок» для объекта «Кнопка», при нажатии на которую осуществляется выход из программы, имеет вид:

Private Sub CommandButton1_Click()

End ‘ конец работы программы

End Sub

Процедуры макросов создаются при записи макросов – по команде меню: Сервис – Макрос – Макросы. Они имеют синтаксис:

Sub ИмяМакроса()

Тело макроса

End Sub

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

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

[Private/Public] Sub ИмяПроцедуры (СписокПараметров)

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

End Sub

где [Private/Public] – необязательные ключевые слова, определяющие область видимости процедуры:

Private – ключевое слово, определяющее область видимости процедуры – в пределах данной формы, рабочего листа;

Public - ключевое слово, определяющее область видимости процедуры –для всего проекта.

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

Процедуры и макросы могут вызываться из других программ. Например:

Sub Макрос1()

Dim Str As String ‘Объявление переменной

Str=«Параметр» ‘Присвоение переменной некоторого значения

Proc (Str) ‘Вызов процедуры с передачей ей параметра

End Sub

Public Sub Proc (St As String)

MsgBox St ‘Вывод на экран переданного параметра

End Sub

‘ комментарий – пояснение к программе, которое не интерпретируется VBA

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

Функция имеет следующий синтаксис:

[Private/Public] Function ИмяФункции (СписокПараметров)_As ТипДанных

Тело функции

ИмяФункции = Выражение

End Function

где [Private/Public] – необязательные ключевые слова, определяющие область видимости функции:

Function - ключевое слово, указывающее, на то, что это функция;

ИмяФункции – имя функции;

СписокПараметров служит для передачи функции исходных данных для вычислений (могут отсутствовать);

ТипДанных – тип данных возвращаемого значения;

End Function – ключевые слова, указывающие на конец функции.

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

Пример:

Sub Proc ()

x=6

p=Y(x) ‘вызов функции

MsgBox p ‘Вывод на экран вычисленного значения

End Sub

Public Function Y (x)_As Integer

Y=x^ 3 ‘расчет куба числа

End Function

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

  • если в проекте нет модуля, то создать его, выполнив команду меню редактораVisual Basic Insert –Module;

  • выполнить команду меню редактораVisual Basic InsertProcedure;

  • в открывшемся диалоговом окне установить переключатель на Sub (процедура) или Function (функция);

  • в окне Name ввести имя;

  • установить соответствующий переключатель области видимости (Scope);

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

Существует определенный формат программного кода, задающего установку свойства и использование метода:

Объект.Свойство=Значение

Например:

Worksheets(1).Font.Size=16 ‘задание размера шрифта для листа 1

Label1.Caption=”Название метки” ‘присвоение метке названия

Объект.Метод [Параметры]

Например:

Worksheets(1).Delete ‘удаление листа 1

Listbox1.Additem “Первый” ‘формирование списка

Listbox1.Additem “Второй”

Различные объекты могут иметь различные свойства и методы.

Для ссылок на ячейки в Excel используются свойства рабочего листа Range и Cells. Range используется для работы с ячейками, строками, столбцами, а также их группами. Cells используется для доступа к отдельной ячейке. Если имя листа не указывается, то используется активный лист. Например, как присвоить ячейке А5 листа 1 значение=7 (все записи эквивалентны)?

Worksheets(1).Range(“A5”).Value=7

Worksheets(1).Range(“A5”)=7

Range(“A5”).Value=7

Worksheets(1).Cells(5,1).Value=7

Cells(5,1)=7

В свойстве Cells(№строки, №колонки) указываются через запятую №строки и №колонки. В свойстве Range при задании диапазона ячеек начало и конец диапазона разделяются двоеточием. Например, Range(“A1:F10”).