Property-uttrykket

Ein eigenskap (property), ogsÄ kalla felt eller attributt, karakteriserer eit gjeve objekt eller ein opplysning. Eigenskapar kan brukast til Ä kontrollera tilgangen til data. Det er vanleg Ä ta med instruksjonar nÄr eigenskapane vert sette eller lesne. Kodane kan vera alt frÄ enkle tildelingar til komplekse innhaldsavhengige rutinar. Bruk av Get, Let eller Set tvingar konsistensen for eigenskapen nÄr det er nÞdvendig.

warning

Dette uttrykket krev at Option Compatible vert sett framfĂžre programkoden i ein modul.


Syntaks:

Diagram over uttrykket Property Get


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

Diagram over uttrykket Property Set


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

Parametrar:

namn: Namnet pÄ eigenskapen.

argument: Verdi som skal overfĂžrast til rutinen Property.

note

Property brukar ofte eitt enkelt argument. Fleire argument kan likevel brukast samstundes.


argumentfragment

argumentfragment


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

Optional: Argumentet er ikkje obligatorisk.

ByRef: Argumentet vert overfĂžrt ved referanse. ByRef er standard.

ByVal: Argumentet vert overfĂžrt ved verdi. Verdien kan endrast av den oppkalla rutinen.

char: Typedeklareringsteikn.

typename: Primitivt datatypenamn. OgsÄ bibliotek eller moduldefinerte typar kan spesifiserast.

= expression: Oppgjev ein standardverdi for argumentet som samsvarar med den deklarerte typen. Optional er nĂždvendig for kvart argument som er ein standardverdi.

ParamArray: Bruk ParamArray nÄr talet pÄ parametrar ikkje er fastsett. Eit typiske scenario er ein brukardefinert funksjon i Calc. Bruken av ParamArray mÄ avgrensast til det siste argumentet i ein rutine.

tip

Bruk av ParamArray eller = expression krev at Option Compatible er sett inn i ein modul framfĂžre programkoden som skal utfĂžrast.


warning

NÄr du brukar Option VBASupport 1, vert argumenta Optional brukte utan standardverdi (= expression) initialiserte ut frÄ datatypen, bortsett frÄ Variant.


typenamn-fragment

fragment av primitive datatypar


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

typedeklareringsteikn


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

Eksempel


      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
      
tip

NÄr eigenskapen Let eller Set manglar, hjelper Get til med Ä verna informasjon som ikkje mÄ endrast av ein annan modul ved eit uhell.



      Option Compatible
      Public Property Get PathDelimiter As String ' Skriveverna 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 ' Eigenskap eller metode ikkje definert: PathDelimiter
          End Select : End If
          PathDelimiter = this
      End Property ' skriveverna PathDelimiter
      
      Sub Main
          PathDelimiter = "a sentence" ' gjer ingenting
      End Sub
      
note

Bruk Let eller Set nÄr du handsamar UNO-tenester eller klasseobjekt:



      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