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.

warning

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


Syntaks:

diagram over udtrykket Property get


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

diagram over udtrykket Property Set


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

note

Property settere bruger ofte et enkelt argument. Flere argumenter accepteres ligeledes.


argumentfragment

argumen fragment


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

tip

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


warning

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


fragment af typename

fragment af primitive datatyper


      {Boolean|Byte|Currency|Date|Double|Integer|Long|Object|Single|String|Variant}
    
fragment af erklæringstegn

typeerklærings-tegn


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

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
      
tip

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
      
note

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
      

Støt os venligst!