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

Передача параметров по ссылке



Передача процедуре параметров по ссылке (by reference) открывает ей доступ к области памяти, где хранится содержимое переменной. В результате процедура может изменять значение переменной, являющейся ее параметром. По умолчанию в VBA все параметры передаются по ссылке.

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

Проще всего представить переменную как выражение, заключив ее в круглые скобки. Например, чтобы передать процедуре целое число через строковый параметр, можно использовать следующий код:

Private Sub Form_Load()Dim intX As IntegerintX = 12 * 3ВызываемаяПроцедура(intX)End SubSub ВызываемаяПроцедура (Bar As String)MsgBox Bar 'Значение переменной Bar - строка "36"End SubНеобязательные параметрыС помощью ключевого слова Optional в списке параметров можно задавать необязательные параметры (optional arguments) процедуры. Если какой-то аргумент задан как необязательный, то и все последующие аргументы в списке аргументов должны быть необязательными и объявляются с ключевым словом optional. В этом коде все аргументы не являются обязательными:Dim strИмя As StringDim strАдрес As StringSub Text(Optional x As String, Optional y As String)MsgBox xMsgBox yEnd SubPrivate Sub Exec()strИмя = "ВашеИмя"strАдрес = 12345 ' Передаются два параметра.Call Text(strИмя, strАдрес)End SubВ этом коде некоторые аргументы обязательны:Dim strИмя As String Dim varАдрес As VariantSub Text(x As String, Optional у As Variant)MsgBox xIf Not IsMissing(y) ThenMsgBox yEnd If End SubPrivate Sub Exec()strИмя = "ВашеИмя" ' Второй параметр не передается.Call Text(strИмя) End Sub

Если необязательный параметр отсутствует, то он рассматривается как параметр с типом variant, имеющий значение Empty. В предыдущем при мере показано, как с помощью функции IsMissing проверять необязательные параметры.

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

В следующем примере процедура возвращает значение по умолчанию необязательного параметра, если при ее вызове он опущен:

Sub ListText (x As String, Optional у As Integer = 12345) MsgBox xMsgBox yEnd SubPrivate Sub Exec()strName = "yourname" ' Второй параметр не передается. Call Text (strName) ' Добавляет "yourname" and "12345".End Sub




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



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