Conteúdo

# Declaração de Propriedade

Uma propriedade, também designada por campo ou atributo, caracteriza um determinado objeto ou elemento de informação. As propriedades podem ser utilizadas para controlar o acesso aos dados. É prática comum incluir instruções no momento da definição ou da leitura das propriedades. O código pode variar desde uma simples atribuição até rotinas complexas dependentes do contexto. A utilização dos acessores Get, Let ou Set garante a consistência das propriedades quando necessário.

Esta instrução requer que Option Compatible seja colocado antes do código executável de um módulo.

### Sintaxe:

             [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

### Parâmetros:

nome: O nome da propriedade.

argumento: Valor a ser passado à rotina setter da Propriedade.

Os setters da propriedade utilizam frequentemente um único argumento. São igualmente aceites vários argumentos.

##### <variável id="argumenth2">fragmento de argumento</variável>

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

##### Parâmetros

Opcional: O argumento não é obrigatório.

ByRef: O argumento é passado por referência. ByRef é o valor predefinido.

ByVal: O argumento é passado por valor. O seu valor pode ser alterado pela rotina chamada.

char: Carácter de declaração de tipo.

typename: Nome do tipo de dados primitivo. Também é possível especificar tipos definidos por bibliotecas ou módulos.

= expressão: Especifique um valor por defeito para o argumento, de acordo com o seu tipo declarado. Opcional é necessário para cada argumento ao especificar um valor por defeito.

ParamArray: Utilize ParamArray quando o número de parâmetros for indeterminado. Um cenário típico é o de uma função definida pelo utilizador no Calc. A utilização de ParamArray deve limitar-se ao último argumento de uma rotina.

A utilização de ParamArray ou = expressão requer que a Opção Compatible seja colocada antes do código executável do programa num módulo.

Ao utilizar Option VBASupport 1, os argumentos Opcionais sem valor predefinido (= expressão) são inicializados de acordo com o seu tipo de dados, exceto se forem do tipo Variant.

##### fragmento typename

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

##### fragmento de caractere

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

## Exemplos

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

Na ausência das propriedades Let ou Set, a propriedade Get ajuda a definir informações protegidas, que não podem ser alteradas acidentalmente por um módulo externo:

          Option Compatible
          Propriedade pública Get PathDelimiter As String ' Variável de leitura apenas
              Static this As String
              If this = "" Then : Select Case GetGuiType()
                  Case 1 : this = ";" ' Windows
                  Caso 4: this = ":" ' Linux ou macOS
                  Caso Else: Erro 423 «Propriedade ou método não definido: PathDelimiter»
              End Select : End If
              PathDelimiter = this
          Fim da propriedade «PathDelimiter» de leitura apenas

          Sub Main
              PathDelimiter = "uma frase" ' não faz nada
          End Sub

Utilize Let ou Set ao lidar com serviços ou objetos de classe da UNO:

          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

Tópicos relacionados

Noções básicas sobre sub-rotinas

Utilização de procedimentos, funções e propriedades

Declaração de função

Sub-instrução

End, Exit instruções

Declaração de classe do módulo opcional

Declaração de compatibilidade de opções

Necessitamos da sua ajuda!