Оператор Property Set
Объявляет имя, аргументы и код, формирующие текст процедурыProperty, которая задает ссылку на объект .
Синтаксис
[ Общедоступная | Частный | Друг ] [ Static ] Property Setname ( [ arglist ], reference )
[ операторы ]
[ Exit Property ]
[ операторы ]
End Property
Синтаксис оператора Property Set включает следующие части:
Part | Описание |
---|---|
Необязательное | Необязательный параметр. Указывает, что аргумент может задаваться или не задаваться вызывающей стороной. |
Public | Необязательный параметр. Указывает, что процедура Property Set доступна для всех других процедур во всех модулях. При использовании в модуле, содержащем оператор Option Private, процедура становится недоступной вне проекта. |
Private | Необязательный параметр. Указывает, что процедура Property Set доступна только для процедур модуля, в котором она объявлена. |
Friend | Необязательный параметр. Используется только в модуле класса. Указывает, что процедура Property Set отображается во всем проекте, но не отображается для контроллера экземпляра объекта. |
Static | Необязательный параметр. Указывает, что локальные переменные процедуры Property Set сохраняются между вызовами. Атрибут Static не влияет на переменные, объявленные вне процедуры Property Set, даже если они используются в этой процедуре. |
name | Обязательно. Имя процедуры Property Set ; соответствует стандартным соглашениям об именовании переменных, за исключением того, что имя может совпадать с процедурой Property Get или Property Let в том же модуле. |
arglist | Обязательно. Список переменных, представляющих аргументы, которые передаются в процедуру Property Set при ее вызове. Несколько аргументов разделяются запятыми. |
reference | Обязательно. Переменная, содержащая ссылку на объект, которая используется в правой части назначения ссылки на объект. |
Операторы | Необязательный параметр. Любая группа операторов, которые выполняются внутри основного текста процедуры Property. |
Аргумент arglist имеет следующий синтаксис и элементы:
[ Необязательный ] [ ByVal | ByRef ] [ ParamArray ] varname [ ( ) ] [ Кактип ] [ =defaultvalue ]
Part | Описание |
---|---|
Необязательное | Необязательный параметр. Указывает, что аргумент не является обязательным. Если он используется, все последующие аргументы в arglist тоже должны быть необязательными и объявляться с использованием ключевого слова Optional. Обратите внимание, что правая часть выраженияProperty Set не может быть необязательным. |
ByVal | Необязательный параметр. Указывает, что аргумент передается значением. |
ByRef | Необязательный параметр. Указывает, что аргумент передается по ссылке. ByRef используется по умолчанию в VBA, в отличие от Visual Basic .NET. |
ParamArray | Необязательный параметр. Используется как последний аргумент в arglist, чтобы указать, что последний аргумент является массивом Optional элементов Variant. Ключевое слово ParamArray позволяет предоставлять произвольное число аргументов. Не может использоваться с аргументами ByVal, ByRef или Optional. |
varname | Обязательно. Имя переменной, представляющее аргумент; соответствует стандарту соглашений об именовании переменных. |
type | Необязательный параметр. Тип данных аргумента, передаваемого в процедуру; существуют типы Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (в настоящее время не поддерживается), Date, String (только для строк переменной длины), Object, Variant или определенный тип объекта. Если параметр не является Optional, может быть указан определяемый пользователем тип. |
defaultvalue | Необязательный параметр. Любая константа или константное выражение. Действительно только для параметров Optional. Если тип — Object, явным значением по умолчанию может быть только Nothing. |
Примечание.
Каждый оператор Property Set должен определять по крайней мере один аргумент для определяемой процедуры. Этот аргумент (или последний аргумент, если их несколько) содержит действительную ссылку на объект, которая назначается свойству при вызове определяемой оператором Property Set процедуры. Он называется ссылкой в предыдущем синтаксисе. Этот элемент не может быть Optional.
Замечания
Если явно не указано с помощью public, private или Friend, процедуры property по умолчанию являются общедоступными. Если Static не используется, значение локальных переменных не сохраняется между вызовами.
Ключевое слово Friend может использоваться только в модулях классов. Однако доступ к процедурам Friend может осуществляться в любом модуле проекта. Процедура Friend не отображается в библиотеке типов своего родительского класса; процедура Friend не может быть привязана позднее.
Весь выполняемый код должен быть в процедурах. Невозможно определить процедуру Property Set внутри другой процедуры Property, Sub или Function .
Оператор Exit Property приводит к немедленному выходу из процедуры Property Set . Выполнение программы продолжается с оператора, который следует за оператором, вызвавшим процедуру Property Set. Любое количество операторов Exit Property допускается в любом месте процедуры Property Set.
Подобно процедурам Function и Property Get, Property Set является отдельной процедурой, которая может принимать аргументы, выполнять последовательность операторов и изменять значения своих аргументов. Однако в отличие от процедур Function и Property Get , которые возвращают значение, можно использовать только процедуру Property Set слева от назначения ссылки на объект или инструкции Set .
Пример
В данном примере оператор Property Set используется для определения процедуры свойства, которая задает ссылку на объект.
' The Pen property may be set to different Pen implementations.
Property Set Pen(P As Object)
Set CurrentPen = P ' Assign Pen to object.
End Property
См. также
- Вызывающие процедуры свойств
- Executing code when setting properties
- Написание процедуры свойства
- Типы данных
- Операторы
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.