КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Передача аргументов по ссылке и по значению
End Sub End Sub End Function Использование функций-процедур и подпрограмм в VBA Подпрограммы End Function
Подпрограмма – представляет собой определенный набор операторов, составленный пользователем и расположенный отдельно от основной программы. Подпрограмма имеет следующий синтаксис:
[Private | Public] [Static] Sub Name([Arglist]) [As Type] 'комментарий, описывающий функцию [Инструкции] [Exit Sub] [Инструкции] End Sub
Использовать собственные функции-процедуры в операторах VBA надо так же, как любые встроенные функции. Все правила и условия по использованию встроенных функций применимы к пользовательским функциям-процедурам. При вызове функции необходимо включать список аргументов в круглых скобках. Если нужно использовать именованные аргументы функциях-процедурах, надо использовать имена из списка аргументов в объявлении функции-процедуры. Например, чтобы использовать именованный аргумент в вызове функции LenTrim, надо использовать оператор, подобный следующему:
AnyStr = SLen(tStr:=MyString)
Для вызова процедуры Sub используется следующие способы:
ИмяПроцедуры СписокФактическихПараметров Call ИмяПроцедуры (СписокФактическихПараметров)
Пример 3:
Dim с As Double 'с - глобальный параметр
Function F(ByVal x As Integer) As Integer F = x ^ 2
Sub Assistant(ByVal a As Integer, ByVal b As Integer) 'Процедура, находящая сумму двух чисел и выводящая 'результат в диалоговом окне C = а + b MsgBox CStr(C)
Sub Main() 'Процедура, находящая сумму двух чисел и выводящая 'результат в диалоговом окне Dim x, у As Double 'Вызов процедуры с фактическими параметрами Call Assistant(1, 3) 'Первоначальное присвоение переменным значений, 'с последующим вызовом процедуры ' x = 1: у = 1 Call Assistant(x, F(x)) Assistant x, у + 2 'Использование функции как фактического параметра х = 1: у = 3 Assistant F(x), у ' Вызов процедуры с указанием фактических параметров по имени
Assistant a:=l, b:=3
Существуют два способа, которыми VBA передает информацию в функцию-процедуру: по ссылке и по значению. По умолчанию VBA передает все аргументы по ссылке. При передаче данных функции посредством аргумента по ссылке VBA, на самом деле, передает только адрес памяти, который ссылается на исходные данные, определенные в списке аргументов функции во время вызова функции. Это означает, что если функция изменяет значения в любом из аргументов, исходные данные, переданные функции посредством этого аргумента, также изменяются. При передаче аргумента по значению VBA создает копию исходных данных и передает эту копию функции. Если функция изменяет значение в аргументе, передаваемом по значению, изменяется только копия данных; исходные данные не изменяются. Передача по ссылке позволяет с помощью функции изменять исходные данные, передаваемые функции посредством аргумента; передача же по значению не позволяет изменять значение исходных данных. Поскольку передача по ссылке позволяет функции изменять значение исходных данных ее аргументов, аргументы, передаваемые по ссылке, могут получить нежелательные побочные значения. Пример 3 содержит код функции Sconcat, которая объединяет две строки, передаваемые ей как параметр по ссылке. Перед объединением строк из них удаляются начальные и конечные пробелы. При этом операторы удаления пробелов в качестве промежуточных переменных используют сами аргументы, таким образом, меняя их значения.
Дата добавления: 2015-05-10; Просмотров: 469; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |