АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

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

Читайте также:
  1. T.5 Определение нормальной скорости распространения пламени и термодинамических параметров
  2. T.5. Определение нормальной скорости распространения пламени и термодинамических параметров.
  3. Выбор аэродинамической схемы, относительных геометрических параметров и характеристик.
  4. ВЫБОР И РАСЧЕТ ПАРАМЕТРОВ СХЕМЫ ЗАМЕЩЕНИЯ ЛЭП СВН
  5. Выбор параметров для редукторов в стандартном исполнении с учетом эксплуатационного коэффициента
  6. Выбор параметров фюзеляжа
  7. Выбор типа, параметров и количества двигателей
  8. Глава 7. Передача винт — гайка
  9. Группа параметров Записи в таблице
  10. Группа параметров Контекстные подсказки
  11. Группа параметров Предпочтение
  12. Записать уравнения системы Y-параметров линейного 4ехполюсника

Передача процедуре параметров по ссылке (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


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)