VBA TypeName

Este artigo demonstrará o uso da função TypeName do VBA.

O VBA Digite o nome A função é usada para determinar o tipo de dados armazenados em uma célula ou o tipo de um objeto selecionado - por exemplo, uma planilha, intervalo ou célula ou um controle em um formulário.

Determinando o tipo de dados em uma célula

Para determinar o tipo de dados em uma célula, podemos usar a função TypeName com a propriedade Cells.

123 Sub TestCellDataType ()MsgBox "O tipo de dados em" & Cells (3, 2) .Address & "é" & TypeName (Cells (3, 2) .Value)End Sub

Se executarmos este código acima com a planilha abaixo, a caixa de mensagem nos dirá que tipo de dados está na célula.

Determinando o tipo de objeto selecionado

Também podemos usar TypeName para determinar que tipo de objeto foi selecionado em uma planilha - um intervalo ou um gráfico, por exemplo.

123 Sub TestSelection ()MsgBox "Você selecionou um" & TypeName (Seleção)End Sub

Ou, se selecionarmos um gráfico:

Podemos aprofundar ainda mais e selecionar os objetos dentro do gráfico, e a macro retornará o que selecionamos.

Tudo isso pode ser mais útil na construção de nosso projeto VBA para controlar o fluxo do código ou para evitar a ocorrência de erros por meio de testes para garantir que o tipo correto de objeto seja selecionado ou que o tipo correto de dados seja inserido em uma célula .

Usando TypeName em controles de formulário

O VBA nos permite criar formulários interativos que o usuário pode preencher e retornar dados ao código para serem usados ​​de várias maneiras. Podemos usar o operador TypeName para determinar o tipo de controles que estão sendo usados ​​em um formulário.

No exemplo abaixo, criei um formulário de usuário com uma variedade de controles - algumas caixas de texto, uma caixa de combinação, 2 botões de opção, 2 caixas de seleção e 3 botões de comando.

Usando o código a seguir, posso determinar que tipo de controles estão no formulário, percorrendo todos os controles do formulário. Usei a função TypeName para retornar uma mensagem com o tipo do controle com uma instrução IF do VBA para verificar o tipo de controle selecionado.

123456 Sub WhatControlType ()Dim ctl como objetoPara cada ctl em Me.ControlsMsgBox "O controle é um" & TypeName (ctl)Próximo ctlEnd Sub

Este tipo de código pode ser muito útil se quisermos habilitar ou desabilitar os controles. No código abaixo, quando o formulário é aberto pela primeira vez, os botões de opção e caixas de seleção são desabilitados.

123456789101112 Sub UserForm_Initialize privado ()Dim ctl como objetoPara cada ctl em Me.ControlsIf TypeName (ctl) = "CheckBox" Thenctl.Enabled = FalseElseIf TypeName (ctl) = "OptionButton" Entãoctl.Enabled = FalseOutroctl.Enabled = TrueFim sePróximo ctlEnd Sub

Para habilitar os botões de opção e caixas de seleção, escrevi mais alguns códigos atrás do botão Habilitar controles.

12345678910 Sub privado cmdEnable_Click ()Dim ctl como objetoPara cada ctl em Me.ControlsIf TypeName (ctl) = "CheckBox" Thenctl.Enabled = Não ctl.EnabledElseIf TypeName (ctl) = "OptionButton" Entãoctl.Enabled = Não ctl.EnabledFim sePróximo ctlEnd Sub

A funcionalidade neste código também pode ser criada usando o VBA TypeOf Operator.

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave