Indhold
Indholdsfortegnelse 🔎︎

# udtrykket Egenskab

En egenskab, også kaldet felt eller attribut, karakteriserer et givet objekt eller en oplysning. Egenskaber kan bruges til at kontrollere adgang til data. Det er almindelig skik at medtage instruktioner, når egenskaber sættes eller læses. Koden kan variere fra enkel tildeling til komplekse kontekstafhængige rutiner. Brug af adgangsgiverne Get, Let eller Set gennemtvinger egenskabernes consistens, når det er nødvendigt.

Dette udtryk kræver, at Option Compatible i modulet er placeret foran den programkode, der kan udføres.

### 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 rutinen Property Set.

Property settere 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 standard.

ByVal: Argumentet overføres ved værdi. Det 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 argumentets standardværdi, 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 typiske scenarie er en brugerdefineret funktion i Calc. Anvendelse af ParamArray bør begrænses til det sidste argument i en rutine.

Anvekdelse af ParamArray eller = expression kræver, at Option Compatible er placeret i et modul foran den programkode, der skal udføres.

Når du bruger Option VBASupport 1, initialiseres Optional-argumenter uden standardværdi (= expression) efter deres datatype, undtagen Variant.

##### fragment af typename

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

##### fragment af erklæringstegn

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

## 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 Property Let eller Property Set, hjælper Property Get med at definere beskyttet information, som ikke må ændres utilsigtet 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" ' udretter 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

Udtrykkene End, Exit

Anvendelse af procedurer og funktioner

Option ClassModule-udtryk

Option Compatible-udtryk