Tipo de VBA

Este artículo demostrará el uso del operador VBA TypeOf.

El operador VBA TypeOf se utiliza para determinar el tipo de un objeto. Esto puede ser útil para habilitar o deshabilitar controles en un formulario VBA o para controlar el flujo de código según el tipo de objeto que se esté utilizando.

Usando TypeOf para controlar el código

Podemos usar TypeOf para asegurarnos de que la selección realizada es el tipo de objeto específico que necesitamos; por ejemplo, es posible que queramos seleccionar un rango y luego usar una instrucción IF para ver qué se selecciona. Si se selecciona un rango, recibiremos un mensaje que nos indica que se seleccionó un rango, pero si no se selecciona un rango, obtendremos un mensaje diferente.

Seleccionemos algunas celdas en nuestra hoja de trabajo.

Ahora, si ejecutamos la macro a continuación, se nos dirá que seleccionamos un Rango.

12345678 Sub TestSelection ()Atenuar como objetoSi TypeOf Selection es Range, entoncesMsgBox "¡Se ha seleccionado un rango!"DemásMsgBox "Se ha seleccionado algo más"Terminara siEnd Sub

Sin embargo, si no seleccionamos un rango y seleccionamos otra cosa, tal vez un gráfico, y luego ejecutamos la macro, obtendremos un resultado diferente.

Usar TypeOf en controles de formulario

VBA nos permite crear formularios interactivos que el usuario puede completar y devolver datos al código para usarlos de varias maneras. Podemos usar el operador TypeOf para determinar el tipo de controles que se están usando en un formulario.

En el siguiente ejemplo, he creado un formulario de usuario con una variedad de controles: un par de cuadros de texto, un cuadro combinado, 2 botones de opción, 2 casillas de verificación y 3 botones de comando.

Usando el código a continuación, puedo determinar qué tipo de controles hay en el formulario recorriendo todos los controles del formulario. He usado la función TypeName para devolver un mensaje con el tipo de control, y he usado una declaración IF de VBA usando el Función TypeOf para verificar qué tipo de control está seleccionado, y luego un cuadro de mensaje adicional para devolver ese tipo de control.

12345678910111213141516171819202122 Sub WhatControlType ()Dim ctl como objetoPara cada ctl en mí.MsgBox (TypeName (ctl))'Utilice la función TypeOf para determinar el tipo de objeto.Si TypeOf ctl es msforms.TextBox, entoncesMsgBox ("El control es un TextBox.")De lo contrario, si TypeOf ctl es msforms.ComboBox, entoncesMsgBox ("El control es un ComboBox.")De lo contrario, si TypeOf ctl es msforms.Label, entoncesMsgBox ("El control es una etiqueta").ElseSi TypeOf ctl es msforms.CommandButton EntoncesMsgBox ("El control es un botón de comando").De lo contrario, si TypeOf ctl es msforms.CheckBox, entoncesMsgBox ("El control es una casilla de verificación").De lo contrario, si TypeOf ctl es msforms.OptionButton, entoncesMsgBox ("El control es un botón de opción / opción").DemásMsgBox ("El objeto es otro tipo de control").Terminara siSiguiente ctlEnd Sub

Este tipo de código puede resultar muy útil si deseamos habilitar o deshabilitar controles. En el siguiente código, cuando el formulario se abre por primera vez, los botones de opción y las casillas de verificación están deshabilitados.

123456789101112 Sub UserForm_Initialize privado ()Dim ctl como objetoPara cada ctl en mí.Si TypeOf ctl es msforms.CheckBox, entoncesctl.Enabled = FalseDe lo contrario, si TypeOf ctl es msforms.OptionButton, entoncesctl.Enabled = FalseDemásctl.Enabled = TrueTerminara siSiguiente ctlEnd Sub

Para habilitar los botones de opción y las casillas de verificación, he escrito más código detrás del botón Habilitar controles.

12345678910 Sub privado cmdEnable_Click ()Dim ctl como objetoPara cada ctl en mí.Si TypeOf ctl es msforms.CheckBox, entoncesctl.Enabled = No ctl.EnabledDe lo contrario, si TypeOf ctl es msforms.OptionButton, entoncesctl.Enabled = No ctl.EnabledTerminara siSiguiente ctlEnd Sub

Ahora, cuando hacemos clic en el botón Habilitar controles, si los controles están deshabilitados, se habilitarán y si están habilitados, se deshabilitarán. Esto se logra utilizando el No Operador que nos permite alternar entre habilitado y deshabilitado.

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave