Innhold
Innholdsliste 🔎︎

# Egenskapsuttrykk

En egenskap, også kalt felt eller attributt, karakteriserer et gitt objekt eller informasjon. Egenskaper kan brukes til å kontrollere tilgang til data. Det er vanlig bruk å inkludere instruksjoner ved innstilling eller lesingstid for egenskaper. Kode kan variere fra enkel tildeling til komplekse kontekstavhengige rutiner. Ved å bruke Get-, Let- eller Set-tilgangselementer fremtvinges egenskapenes konsistens når det er nødvendig.

Dette uttrykke krever at Option Compatible plasseres foran den kjørbare programkoden i en 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: Egenskapsnavnet.

argument: Verdi som skal overføres til Property-Sett rutinen.

Egenskaps-innstillere bruker ofte et enkelt argument. Flere argumenter aksepteres likt.

##### argumentfragment

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

##### Parametre

Valgfritt: Argumentet er ikke obligatorisk.

ByRef: Argumentet sendes via en referanse. ByRef som er standard.

ByVal: Argumentet sendes med verdi. Verdien kan endres av den anropte rutinen.

char: Skriv inn deklarasjonstegn.

typenavn: Primitivt datatypenavn. Bibliotek- eller moduldefinerte typer kan også spesifiseres.

= uttrykk: Spesifiser en standardverdi for argumentet som samsvarer med dens deklarerte type. Valgfritt er nødvendig for hvert argument som spesifiserer en standardverdi.

ParamArray: Bruk ParamArray når antallet parametere er ubestemt. Et typisk scenario er en Calc brukerdefinert funksjon. Bruk av ParamArray bør begrenses til det siste argumentet i en rutine.

Bruk avParamArray eller = uttrykk krever at Option Compatible plasseres foran den kjørbare programkoden i en modul.

Når du bruker Alternativ VBASupport 1, Valgfri argumenter uten standardverdi (= uttrykk) initialiseres i henhold til deres datatype, bortsett fra hvis Variant.

##### typenavn fragment

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

##### char 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 av Property Let eller Property Set, hjelper Property Get med å definere beskyttet informasjon, som ikke ved et uhell kan endres av en utenforstående modul:

          Option Compatible
          Offentlig eiendom Få 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: Feil 423 ' Egenskap eller metode ikke definert: PathDelimiter
              End Select : End If
              PathDelimiter = this
          End Property ' skrivebeskyttet PathDelimiter

          Sub Main
              PathDelimiter = "en setning" ' gjør ingenting
          End Sub

Bruk 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

Lignende emner

Grunnleggende om subrutiner

Bruke prosedyrer, funksjoner og egenskaper

Funksjonsuttrykk

Sub Uttrykk

End, Exit uttrykk

Alternativt ClassModule Uttrykk

Alternativ Compatible uttrykk