Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Передача по ссылке и по значениюСодержание книги
Поиск на нашем сайте Передача аргументов из одной программы в другую осуществляется двумя способами — по ссылке (by reference) и по значению (by value). В первом случае передается сама переменная, поэтому ее значение в подпрограмме можно изменить. Во втором случае — только значение переменной, а не она сама, и изменить ее в вызванной подпрограмме нельзя. Выбор способа передачи осуществляется ключевыми словами ByRef и ByVal, которые в круглых скобках указываются в описании вызываемой подпрограммы. Примечание При отсутствии в описании аргументов ключевых слов ByRef и ByVal передача осуществляется по ссылке. В программе ПередачаАргументаПоСылке переменная UserName передается в подпрограмму ChangeName по ссылке. Sub ПередачаАргументаПоСылке () Dim UserName As String UserName = "Иван" ChangeName UserName MsgBox UserName End Sub Sub ChangeName (ByRef UserName) UserName = "Петр" End Sub В первой строке подпрограммы ChangeName в круглых скобках набраны ключевое слово ByRef и имя переменной UserName, указывая, что аргумент UserName будет передан в подпрограмму по ссылке. Это означает, что в подпрограмме используется сама переданная в нее переменная. В частности, в ChangeName переменной UserName присваивается новое значение Петр, которое затем возвращается в процедуру
Sub ПередачаАргументаПоСсылке_РазныеПеременные () Dim UserName As String UserName = "Иван" ChangeName2 UserName MsgBox UserName End Sub Sub ChangeName2(ByRef NewName) NewName = "Петр" End Sub Такая конструкция используется в том случае, когда одна и та же подпрограмма вызывается для разных переменных. При передаче аргумента по значению сама передаваемая переменная в подпрограмму не попадает. Поэтому изменения, внесенные в нее в вызванной программе, не скажутся на ее значении в вызвавшей программе. Передача по значению аналогична передаче по ссылке, только в этом случае используется ключевое слово ByVal. Sub ПередачаАргументаПоЗначению () Dim UserName As String UserName = "Иван" ChangeName3 UserName MsgBox "В исходной программе имя осталось прежним " _ & UserName End Sub Sub ChangeName3(ByVal UserName) MsgBox "Сначала был " & UserName & "." UserName = "Петр" MsgBox "В вызванной подпрограмме имя стало " & UserName End Sub Исходное значение UserName передано в подпрограмму ChangeName3 и выведено на экран. Затем оно изменяется и снова выводится на экран во втором информационном окне. Поскольку аргумент был передан в ChangeName3 по значению, исходная переменная UserName после возвращения управления в ПередачаАргументаПоЗначению не изменяется, о чем и свидетельствует окно, выводимое на экран в последней строке этой программы. Использование функций в VBA Мы уже говорили, что программы VBA делятся на два вида — подпрограммы и функции. До сих пор в этой главе мы обсуждали подпрограммы, и вот теперь черед функций. Функции и подпрограммы имеют всего три основных отличия.
Рассмотрим пример функции Multiply, вычисляющей произведение двух чисел. Sub ВызовФункции() Dim Var1 As Integer Dim Var2 As Integer Dim Var3 As Integer Var1 =5 Var2 = 10 Var3 = Multiply(Var1, Var2) MsgBox Var3 End Sub Function Multiply(ByVal Var1, ByVal Var2) Multiply = Var1 * Var2 End Function Обратите внимание на строку 2 функции Multiply — в ней значение произведения двух чисел присваивается имени функции. Как раз через него вычисленное значение возвращается в вызывающую программу. Примечание Определять тип аргументов функции и возвращаемого ею значения можно в описании функции, как показано ниже. Function Multiply (ByVal Var1 As Integer, _ ByVal Var2 As Integer) Если Вы не укажете тип функции и ее аргументов, им будет присвоен тип по умолчанию (Variant). Вы, вероятно, обратили внимание на любопытную особенность вызова функции Multiply — он указан в правой части оператора присваивания, в левой части которого помещена переменная Var3. При этом список аргументов — Varl и Var2 — заключен в круглые скобки. Эти переменные передаются в функцию Multiply, а возвращаемое ею значение присваивается переменной Var3. Взгляните на предыдущие примеры: при вызове подпрограммы передаваемые в нее аргументы в скобки не заключаются. Запомните следующие основные правила передачи аргументов в подпрограммы и функции.
|
||||||||
|
Последнее изменение этой страницы: 2021-12-15; просмотров: 77; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.236 (0.008 с.) |