На главную Напишите нам! Напишите нам!
16-04-2024
колонтитул в word 2007, 0000002111

Необязательные аргументы функций VBA.

Синтаксис функции в VBA:

Replace (Expression,Find,Replace[,Start[,Count[,Compare]]])

Параметры функции

Expression — Обязательный аргумент — строка, в которой требуется замена

Find — Обязательный аргумент — подстрока, которую нужно заменить

Replace — Обязательный аргумент — подстрока замены

Start — Необязательный аргумент — указывает позицию

Count — Необязательный аргумент — указывает число

Compare — Необязательный аргумент-вид сравнения

Пример кода на языке программирования VBA (Visual Basic for Applications):

'меняем слово «хочу» на «люблю» 1 раз

Dim sample$, findstr$, newstr$, retval$

sample = «Я хочу,хочу,хочу тебя» 'строка, которую будем менять

findstr = «хочу» 'подстрока для замены

newstr = «люблю» 'новая подстрока для замены

retval =Replace (sample,findstr, newstr, 1, 1) 'меняем один раз, начиная с первого символа

MsgBox retval

Задание типа необязательного аргумента

Для того, чтобы правильно использовать функции и обнаруживать операторы, которые передают функции неверные значения объявляется тип необязательного аргумента (иначе они имеют тип Variant). Тип необязательного аргумента объявляется тем же способом, что и тип обязательного аргумента - при помощи ключевого слова As:

Function NameFunct(tStr As String, Optional neobArgument As Integer) As String

Значения по умолчанию для необязательных аргументов

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

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

Function GetBookName(Optional lDflt As String = "Book1") As String

Передача аргументов

Существуют два способа для передачи информации в функцию-процедуру: по ссылке (по умолчанию) и по значению.

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

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

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

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

В листинге, представленном выше, показано, что до применения функции Argument строковая переменная s1 содержала текстовую строку в нижнем регистре, а после применения функции она уже содержит строку в верхнем регистре.

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

Чтобы явно указать, передает VBA аргумент по значению или по ссылке, надо использовать ключевые слова ByVal, ByRef перед аргументом, для которого необходимо задать метод передачи.

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

колонтитулы в word 2007, 000000211111

Добавить в Мой Мир  Добавить в ВКонтакте.ру  Добавить в Facebook  Добавить в LiveJournal  Добавить в twitter

колонтитулы в word 2007, 000000211
нумерация страниц в word 2007, 00000021111
Яндекс.Метрика
Копирование возможно при указании прямой индексируемой гиперссылки
п»ї
0000002