Indhold

# Udtrykket Property (Egenskab)

En egenskab, også kaldet felt eller attribut, kendetegner et givet objekt eller en information. Egenskaber kan bruges til at kontrollere tilgang til data. Det er almindelig brug at medtage instruktioner ved egenskabernes sætte- eller læsetidspunkt. Kode kan variere fra simpel tildeling til komplekse kontekstafhængige rutiner. Med accessorerne Get, Let eller Set forstærkes egenskabernes konsistens om nødvendigt.

Dette udtryk kræver, at Option Compatible er placeret foran den eksekverbare programkode i et modul.

### Syntaks:

             [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

### Parametre:

name: Egenskabens navn.

argument: værdi, der skal overføres til sætte-rutinen Property.

Property-sættere bruger ofte et enkelt argument. Flere argumenter accepteres ligeledes.

##### argumentfragment

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

##### Parametre

Optional: Argumentet er ikke obligatorisk.

ByRef: Argumentet overføres ved reference. ByRef er standarden.

ByVal: Argumentet overføres ved værdi. Dets værdi kan ændres af den kaldte rutine.

char: Typeerklærings-tegn.

typename: Primitivt datatypename. Der kan også angives biblioteker eller moduler, der er defineret som typer.

= expression: Angiv standardværdi til argumentet, der matcher dets erklærede type. Optional er nødvendig for ethvert argument, der angiver en standardværdi.

ParamArray: Brug ParamArray, når antallet af parametre er ubestemt. Et typisk scenarie er en brugerdefineret Calc-funktion. Brug af ParamArray bør begrænses til den sidste parameter i en rutine.

Brug af ParamArray eller = expression kræver, at Option Compatible er placeret foran den eksekverbare programkode i modulet.

Under brug af Option VBASupport 1 initialiseres Optional-argumenter uden nogen standardværdi (= expression) efter deres datatype, undtagen hvis den er Variant.

##### typenavn-fragment

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

##### tegn-fragment

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

## Eksempler

          Option Compatible
          Sub Main
              ProductName = "Office"
              Print ProductName ' viser "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

I fravær af egenskaben Let eller egenskaben Set, hjælper egenskaben Get med at definere beskyttet information, som kan ændres tilfældigt af et fremmed modul:

          Option Compatible
          Public Property Get PathDelimiter As String ' Skrivebeskyttet variabel
              Static this As String
              If this = "" Then : Select Case GetGuiType()
                  Case 1 : this = ";" ' Windows
                  Case 4 : this = ":" ' Linux eller macOS
                  Case Else : Error 423 ' Egenskab eller metode ikke defineret: PathDelimiter
              End Select : End If
              PathDelimiter = this
          End Property ' skrivebeskyttet PathDelimiter

          Sub Main
              PathDelimiter = "a sentence" ' gør intet
          End Sub

Brug Let eller Set, når du håndterer UNO-tjenester eller klasseobjekter:

          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

Relaterede emner

Grundlæggende om subrutiner

Brug af procedurer, funktioner og egenskaber

Udtrykket Funktion

Erklæringen Sub

Udtrykkene End, Exit

Option ClassModule-udtryk

Option Compatible-udtryk