Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Приложение. VBA поддерживает два типа подпрограмм: процедуры и функции



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.





Дата публикования: 2014-11-02; Прочитано: 452 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...