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.

warning

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


Syntax:

Diagramm der Anweisung Property Get


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

Diagramm der Anweisung Property Set


         [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.

note

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


Argumentfragment

Fragment f├╝r argument


      {[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: Geben Sie einen Standardwert f├╝r das Argument an, 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.

tip

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


warning

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


Typnamenfragment

Fragment primitiver Datentypen


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

Zeichen-Typdeklaration


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

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
      
tip

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
      
note

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
      

Bitte unterst├╝tzen Sie uns!