Enumeração é uma constante qualificada que pode ser acessada diretamente, e possui algumas peculiaridades.
- Introdução
- Enumerações Pré-Definidas
- Enumerações Personalizadas
- Exibir Constantes de uma Enumeração
- Valores Padrões de Membros de uma Enumeração
- Usar Enumeração como Tipo de Dados
Introdução
Enumerações são tipos de dados que possuem constantes numéricas como membros. Existem enumerações pré-definidas no VBA e no aplicativo que hospeda o VBE, e, além disso, você pode criar também suas próprias enumerações.
Enumerações Pré-Definidas
Observe o código abaixo:
MsgBox "Dados preenchidos com sucesso.", vbInformation
Conforme explicado na página sobre constantes, é mais fácil memorizar vbInformation
a 64 para modificar a interface de um caixa de mensagem.
Indo mais a fundo, vbInformation
é uma constante que faz parte da enumeração pré-definida vbMsgBoxStyle
. Tecnicamente, falamos que a constante vbInformation
é um membro da enumeração VbMsgBoxStyle
. Você pode descobrir isso usando o Pesquisador de Objeto.
A Janela Pesquisador de Objeto
No VBE, pressione F2 para exibir a janela Pesquisador de Objeto. Seguindo o exemplo desta página, digite vbInformation
na caixa de combinação de baixo, como mostrado e clique no ícone de binóculo:
O resultado nos traz informações interessantes. Na primeira caixa de listagem, é mostrado que vbInformation
é um membro da classe (nesse caso, uma enumeração) vbMsgBoxStyle
, e essa enumeração faz parte da biblioteca VBA.
Abaixo da caixa de listagem são mostrados mais detalhes dessa seleção. Há um lista com todas as classes (e enumerações) da biblioteca VBA, e na caixa de listagem ao seu lado, todos os membros (isto é constantes) do item selecionado, que nesse caso é a enumeração VbMsgBoxStyle
:
E por fim, na porção inferior da tela (de cor fundo cinza), é mostrado que vbInformation
é uma constante (por causa da palavra Const
), seu valor decimal (64), seu valor hexadecimal (&H40) e sua qualificação da forma biblioteca.membro
.
A biblioteca VBA é discutida com mais detalhes em outra página deste site, no entanto, é importante você saber que pode se referenciar à constante vbInformation
de qualquer uma das formas que desejar abaixo:
Sub Main() Debug.Print vbInformation Debug.Print VbMsgBoxStyle.vbInformation Debug.Print VBA.VbMsgBoxStyle.vbInformation End Sub
Você pode se referir diretamente à uma constante pelo seu nome, qualificando-a com o nome de sua enumeração ou até mesmo qualifica-la no nível de biblioteca. A saber, função MsgBox
faz parte da biblioteca VBA, bem como a enumeração VbMsgBoxStyle
.
Enumerações Personalizadas
A vantagem em usar enumerações personalizadas é que você pode agrupar constantes do seu projeto de uma forma lógica.
As regras para dar nome a uma enumeração são iguais para variáveis e constantes.
Para declarar uma enumeração, utilize a instrução Enum
:
Enum Abrigo Casa = 1 Prédio = 2 Hotel = 3 ApartHotel = 4 End Enum
Enumerações devem ser declaradas na Seção de Declaração de um módulo e possuem dois níveis de escopo: local (nível de módulo) e global (nível de projeto). Se você não especificar o escopo de uma enumeração, então ela será considerada global. Logo:
Enum Abrigo
É equivalente a:
Public Enum Abrigo
Para definir uma enumeração local, utilize a palavra chave Private
:
Private Enum Abrigo
Particularmente, utilizo o prefixo e para indicar uma enumeração, sendo o exemplo acima eAbrigo
, e não diferencio enumerações locais de globais. Algumas pessoas utilizam, além de e, g ou m para identificar seu escopo. Então, a enumeração local de abrigo poderia ser chamada de meAbrigo
e a global de geAbrigo
.
Exibir Constantes de uma Enumeração
Você pode qualificar ou não uma enumeração ao usá-la em seu projeto:
Private Enum eAbrigo Casa = 1 Prédio = 2 Hotel = 3 ApartHotel = 4 End Enum Sub Main() 'Você pode representar a constante Prédio de duas formas: Debug.Print Prédio Debug.Print eAbrigo.Prédio End Sub
Particularmente, qualifico a enumeração, pois assim aproveito do recurso Intellisense (janela suspensa da janela de código) do VBE:
Valores Padrões de Membros de uma Enumeração
Você não é obrigado a especificar o valor de cada membro de uma enumeração. Você pode deixá-las em branco. Logo:
Private Enum eAbrigo Casa = 1 Prédio = 2 Hotel = 3 ApartHotel = 4 End Enum
É equivalente a:
Private Enum eAbrigo Casa = 1 Prédio Hotel ApartHotel End Enum
Você poderia deixar, no exemplo acima, o membro Casa
sem definição, que por padrão, o VBA por padrão adotaria 0
.
Você pode usar valores negativos também nas definições, se assim quiser.
Usar Enumeração como Tipo de Dados
Quando você cria uma enumeração, você também cria um tipo de dados. Você pode, então, declarar uma variável como um tipo de dados de sua enumeração personalizada:
Dim Abrigo As eAbrigo
A vantagem de se utilizar um tipo de dados como enumeração é, além de não precisar decorar um número para um valor de tipo de abrigo, utilizar o recurso do Intellisense do VBE. Quando você declara uma variável como uma enumeração, ao pressionar = no VBE ou entrá-la como argumento em outro procedimento, o Intellisense é mostrado:
A partir daí, basta usar as setas direcionais (ou digitar as primeiras letras da constante) e pressionar Tab ou Enter.
Deixar um comentário
Você precise estar logged in para postar um comentário.