Inhalte

# Anweisung Property

Eine Eigenschaft, auch Feld oder Attribut genannt, charakterisiert ein bestimmtes Objekt oder eine bestimmte Information. Eigenschaften können verwendet werden, um den Zugriff auf Daten zu steuern. Es ist üblich, Anweisungen zum Einstellen oder Lesen von Eigenschaften hinzuzufügen. Code kann von einfacher Zuweisung bis hin zu komplexen kontextabhängigen Routinen variieren. Die Verwendung der Accessoren Get, Let oder Set erzwingt bei Bedarf die Konsistenz der Eigenschaften.

Diese Anweisung erfordert, dass Option Compatible vor dem ausführbaren Programmcode in einem Modul platziert wird.

### Syntax:

             [Private | Public] Property Get name[char | As typename]
             End Property

             [Private | Public] Property [Let | Set] name[char] [([Optional [ByRef | ByVal]]value[char | As typename])] [As typename]
             End Property

### Parameter:

name: Der Eigenschaftsname.

argument: Wert, der an die Setter-Routine Property übergeben werden soll.

Property-Setter verwenden oft ein einzelnes Argument. Mehrere Argumente werden gleichermaßen akzeptiert.

##### Argumentfragment

          {[Optional [ByRef|ByVal]]|ParamArray} argument {{As typename|char}[ = expression]|[()]As Variant}

##### Parameter

Optional: Das Argument ist nicht obligatorisch.

ByRef: Das Argument wird als Referenz übergeben. NyRef ist die Standardeinstellung.

ByVal: Das Argument wird als Wert übergeben. Sein Wert kann von der aufgerufenen Routine geändert werden.

char: Typdeklarationszeichen.

typename: Primitiver Datentypname. Bibliotheks- oder moduldefinierte Typen können ebenfalls angegeben werden.

= expression: Legen Sie einen Standardwert für das Argument fest, der seinem deklarierten Typ entspricht. Optional ist für jedes Argument erforderlich, das einen Standardwert angibt.

ParamArray: Verwenden Sie ParamArray, wenn die Anzahl der Parameter unbestimmt ist. Ein typisches Szenario ist das einer benutzerdefinierten Calc-Funktion. Die Verwendung von ParamArray sollte auf das letzte Argument einer Routine beschränkt sein.

Die Verwendung von ParamArray oder = expression erfordert, dass Option Compatible vor dem ausführbaren Programmcode in einem Modul platziert ist.

Bei Verwendung von Option VBASupport 1 werden Argumente Optional ohne Standardwert (= expression) entsprechend ihrem Datentyp initialisiert, außer wenn Variant.

##### Typnamenfragment

          {Boolean|Byte|Currency|Date|Double|Integer|Long|Object|Single|String|Variant}

##### Zeichenfragment

          { % | & | ! | # | $ | @ }

## Beispiele

          Option Compatible
          Sub Main
              ProductName = "Office"
              Print ProductName ' Zeigt "LibreOffice"
          End Sub

          Private _office As String
          Property Get ProductName As String
              ProductName = _office
          End Property
          Property Let ProductName(value As String)
              _office = "Libre"& value
          End Property

In Abwesenheit von Property Let oder Property Set hilft Property Get dabei, geschützte Informationen zu definieren, die nicht versehentlich von einem fremden Modul geändert werden können:

          Option Compatible
          Public Property Get PathDelimiter As String ' Schreibgeschützte Variable
              Static this As String
              If this = "" Then : Select Case GetGuiType()
                  Case 1 : this = ";" ' Windows
                  Case 4 : this = ":" ' Linux oder macOS
                  Case Else : Error 423 ' Eigenschaft oder Methode nicht definiert: PathDelimiter
              End Select : End If
              PathDelimiter = this
          End Property ' Schreibgeschützter PathDelimiter

          Sub Main
              PathDelimiter = "a sentence" ' Nichts passiert
          End Sub

Verwenden Sie Let oder Set beim Umgang mit UNO-Diensten oder Klassenobjekten:

          Option Compatible
          Sub Main
              'Set anObject = CreateUnoService( "com.sun.star.frame.Desktop" )
              anObject = CreateUnoService( "com.sun.star.frame.Desktop" )
              Print anObject.SupportedServiceNames(0) ' displays "com.sun.star.frame.Frame"
          End Sub

          Property Get anObject As Object
              Set anObject = _obj
          End Property

          Private _obj As Object

          'Property Set anObject(value As Object)
              'Set _obj = value.CurrentFrame
          'End Property
          Property Let anObject(value As Object)
              Set _obj = value.CurrentFrame
          End Property

Verwandte Themen

Grundlagen zu Unterprogrammen

Prozeduren, Funktionen und Eigenschaften verwenden

Anweisung "Function"

Anweisung Sub

Anweisungen End, Exit

Anweisung Option ClassModule

Anweisung "Option Compatible"