|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Передача параметров по ссылкеПередача процедуре параметров по ссылке (by reference) открывает ей доступ к области памяти, где хранится содержимое переменной. В результате процедура может изменять значение переменной, являющейся ее параметром. По умолчанию в VBA все параметры передаются по ссылке. Если задается тип данных параметра, передаваемого по ссылке, то передаваемый параметр должен содержать значение специфицированного типа данных. Можно обойти это правило, передавая процедуре в качестве параметра выражение. В этом случае VBA вычислит выражение и передаст его значение процедуре, преобразовав его в нужный тип, если это окажется возможным. Проще всего представить переменную как выражение, заключив ее в круглые скобки. Например, чтобы передать процедуре целое число через строковый параметр, можно использовать следующий код: Private Sub Form_Load() Dim intX As Integer intX = 12 * 3 ВызываемаяПроцедура(intX) End Sub Sub ВызываемаяПроцедура (Bar As String) MsgBox Bar 'Значение переменной Bar - строка "36" End Sub Необязательные параметры С помощью ключевого слова Optional в списке параметров можно задавать необязательные параметры (optional arguments) процедуры. Если какой-то аргумент задан как необязательный, то и все последующие аргументы в списке аргументов должны быть необязательными и объявляются с ключевым словом optional. В этом коде все аргументы не являются обязательными: Dim strИмя As String Dim strАдрес As String Sub Text(Optional x As String, Optional y As String) MsgBox x MsgBox y End Sub Private Sub Exec() strИмя = "ВашеИмя" strАдрес = 12345 ' Передаются два параметра. Call Text(strИмя, strАдрес) End Sub В этом коде некоторые аргументы обязательны: Dim strИмя As String Dim varАдрес As Variant Sub Text(x As String, Optional у As Variant) MsgBox x If Not IsMissing(y) Then MsgBox y End If End Sub Private Sub Exec() strИмя = "ВашеИмя" ' Второй параметр не передается. Call Text(strИмя) End Sub Если необязательный параметр отсутствует, то он рассматривается как параметр с типом variant, имеющий значение Empty. В предыдущем при мере показано, как с помощью функции IsMissing проверять необязательные параметры. Значения по умолчанию для необязательных параметров В следующем примере процедура возвращает значение по умолчанию необязательного параметра, если при ее вызове он опущен: Sub ListText (x As String, Optional у As Integer = 12345) MsgBox x MsgBox y End Sub Private Sub Exec() strName = "yourname" ' Второй параметр не передается. Call Text (strName) ' Добавляет "yourname" and "12345". End Sub Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |