Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Передача процедуре параметров по ссылке (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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!