- •Минобрнауки россии
- •Оглавление
- •Введение
- •1. Лабораторная работа № 1
- •1.1. Создание интерфейса пользователя
- •1.1.1. Основные понятия
- •1.1.2. Редактор vba
- •1.2. Работа с переменными, массивами, константами
- •1.2.1. Основные инструкции языка Visual Basic
- •1.2.3. Создание интерфейса пользователя
- •1.2.4. Окно свойств
- •1.2.4. Меню Edit
- •1.2.5. Меню View
- •1.2.6. Меню Format
- •1.3.1. Пользовательские формы
- •1.3.2. Свойства объекта UserForm
- •1.3.3. Методы объекта UserForm
- •1.3.4. События объекта UserForm
- •1.4. Контрольные вопросы
- •2. Лабораторная работа № 2
- •2.1. Элементы управления
- •2.1.1. Свойства элементов управления
- •2.1.2. Методы и события элементов управления
- •2.2. Командная кнопкаCommandButton
- •2.3. Элемент управления надписью (метка)Label
- •2.4. Текстовое окно (поле ввода)TextBox
- •2.5. Контрольные вопросы
- •3. Лабораторная работа № 3
- •3.1. Алгоритм. Способы записи алгоритма
- •3.1.1. Структуры алгоритмов
- •3.1.2. Линейная структура алгоритма
- •3.3. Полоса прокрутки
- •3.4. Задания для выполнения
- •Контрольные вопросы
- •4. Лабораторная работа № 4
- •4.1. Разветвляющаяся структура алгоритма
- •4.1.1. Условный оператор if
- •4.1.2. Оператор выбора Select Case
- •4.1.3. Оператор выбора GoTo
- •4.2. Задания для выполнения
- •4.3. Контрольные вопросы
- •5. Лабораторная работа № 5
- •5.1. Циклические структуры алгоритмов
- •5.1.1. Фиксированные циклы
- •5.2. Элемент управления ListBox (список)
- •5.3. Поле со списком
- •5.4. Задания для выполнения
- •5.5. Контрольные вопросы
- •6. Лабораторная работа № 6
- •6.1. Циклы с условием (неопределённые циклы)
- •6.2. Элемент управления Рамка
- •6.3. Элементы управления Флажок и Переключатель
- •6.4. Задания для выполнения
- •6.5. Контрольные вопросы
- •7. Лабораторная работа № 7
- •7.1. Массивы
- •7.1.1. Объявление массивов
- •7.1.2. Объявление массива фиксированного размера
- •7.1.3. Объявление динамического массива
- •7.2. Задания для выполнения
- •7.3. Контрольные вопросы
- •8. Лабораторная работа №8
- •8.1. Работа с матрицами
- •Задания для выполнения
- •8.3. Контрольные вопросы
- •9. Лабораторная работа №9
- •9.1.Список и его составные элементы
- •9.2. Формирование списка
- •9.3. Задания на выполнения
- •10. Задания для самостоятельной работы
- •Приложение
- •Библиографический список
- •Лабораторный
Приложение
VBA поддерживает два типа подпрограмм: процедуры и функции.
Функция – это подпрограмма, которая возвращает результат. Вызов функции является выражением и может использоваться в других выражениях или в правой части оператора присваивания.
Процедура – это любая подпрограмма, которая не является функцией. Любой макрос VBA является подпрограммой типа «процедура».
Процедура является самостоятельной частью кода, которая имеет имя и может содержать аргументы, выполнять последовательность инструкций и изменять значения своих аргументов.
Для объявления процедуры в VBA используется ключевое слово Sub:
Sub <имяПроцедуры> [(<списокПараметров>)]
<операторы> End Sub,
где:
<имяПроцедуры> – любой допустимый идентификатор VBA;
<списокПараметров> – список формальных параметров процедуры, если он пуст, то такая процедура является макросом;
<операторы> – любая последовательность операторов VBA.
Синтаксис объявления функции несколько сложнее, чем синтаксис процедуры:
Function <имяФункции> [(<списокПараметров>)] [As <типФункции>]
<операторы>
. . .
<имяФункции> = <возвращаемое_значение> [<операторы>]
End Function,
где:
<имяФункции> – любой допустимый идентификатор;
<списокПараметров> – список формальных параметров процедуры;
<типФункции> – имя любого поддерживаемого VBA типа данных;
<операторы> – любая последовательность операторов VBA.
<возвращаемое_значение> – результат, передаваемый в вызывающую программу.
Подпрограммы VBA могут принимать для обработки формальные параметры, указываемые при объявлении. При вызове они заменяются фактическими параметрами, т. е. реально используемыми в вызывающей программе.
В VBA список формальных параметров подпрограммы представляет имена переменных, разделённых запятой. При этом желательно указать тип каждой переменной:
Function | Sub <имяПроцедуры> (<параметр1> As <тип>, _
<параметр2> As <тип>, ..., <параметрN> As <тип>).
Если тип данных параметра не указан, то автоматически будет использован тип Variant.
Список параметров может быть пустым как для процедуры, так и для функции. В этом случае после имени процедуры ставятся пустые круглые скобки.
При передаче фактических параметров в подпрограмму может использоваться один из двух различных способов:
передача по значению;
передача по ссылке.
При передаче по значению в подпрограмме создаётся копия переданного фактического параметра. Все действия внутри подпрограммы выполняются над этой копией и при выходе из подпрограммы все изменения теряются.
Если переменная передаётся по ссылке, то процедуре или функции будет передан адрес этой переменной. Тем самым вызываемая процедура может изменить значение фактического параметра: если будет изменён формальный параметр процедуры, то переданный при вызове ей фактический параметр тоже изменит своё значение.
Способ передачи указывается при описании параметров в строке объявления подпрограммы. Имени параметра может предшествовать один из явных описателей способа передачи:
ByRef – задаёт передачу по ссылке;
ByVal – задаёт передачу по значению.
По умолчанию выполняется передача по ссылке.
Вызов подпрограмм
Подпрограммы могут быть вызваны различными способами:
Процедуру (Sub)с непустым списком параметров можно вызвать только из другой процедуры или функции так:
<имяПроцедуры> <списокПараметров>
Или так:
Call <имяПроцедуры> (<списокПараметров>)’ использована инструкция Call.
Процедура с пустым списком параметров рассматривается VBA как командный макрос. Её также можно вызвать двумя способами:
- из другой процедуры или функции;
- с помощью комбинации клавиш быстрого вызова, команд меню или кнопок панелей инструментов.
Функцию (Function) можно вызывать точно так же, как и процедуру, в виде отдельного оператора. В этом случае возвращаемое функцией значение игнорируется.
Процедуры позволяют разбивать программные модули на небольшие логические блоки. В Visual Basic существуют следующие виды процедур:
VBA позволяет создавать три типа процедур Sub, Function и Property. При запуске процедуры Sub выполняются команды процедуры, а затем управление передаётся в приложение или процедуру, которая вызвала процедуру Sub.
Function (функция) также решает определённую задачу. Различие заключается в том, что функция возвращает единственное значение, поэтому обычно используется для выполнения вычислений.
Property используется для ссылки на свойство объекта. Применяется для установки или получения значения пользовательских свойств форм и модулей. Процедуры Sub подразделяются на процедуры, связанные с элементами управления (событийные) и процедуры общего назначения.
Пример оформления самостоятельной работы
Задание
Даны матрицы:
. .
Найти максимальный элемент в каждой матрице. Использовать подпрограмму.
На рисунке 33 представлена блок-схема функции.
На рисунках 34 и 35 представлена блок-схема и результат работы основной программы.
Рисунок 33 – Блок-схема процедуры
Рисунок 34 – Блок-схемы основной программы
Рисунок 35 – Результат работы приложения
Событийная процедура кнопки Вычислить
Dim c(1 To 6, 1 To 6) As Single
Function maxum(k, L, n, m)
max = -10000
For i = 1 To n
For j = 1 To m
c(i, j) = Cells(i + k, j + L)
If c(i, j) > max Then max = c(i, j)
Next j
Next i
maxum = max
End Function.
Private Sub CommandButton1_Click()
Dim c(1 To 6, 1 To 6) As Single
Dim b(1 To 6, 1 To 6) As Single
Dim i, j, k, L, m, n As Byte
For i = 1 To 3
For j = 1 To 4
c(i, j) = Cells(i + 1, j)
Next j
Next i
n = 3
m = 4
k = 1
L = 0
maxa = maxum(k, L, n, m)
TextBox1.Text = Format(maxa, "0.00")
k = 6
L = 2
maxb = maxum(k, L, 5, 2)
TextBox2.Text = Format(maxb, "0.00")
End Sub.