Validar objetos en vba Excel con TypeName
La función TypeName de vba Excel nos devuelve una cadena de texto que nos da información acerca de una variable. La variable puede ser una celda, el valor de una celda, un rango. un objeto, una hoja, un libro de trabajo etc.
Antecedentes
Programando mis macros de conversión de texto a mayúsculas, minúsculas, etc., (EXCELeINFO add-in), me di cuenta que si no tenía un rango elegido, me arrojaba un error de que la operación no se podía aplicar en el objeto, y entonces me di cuenta que antes de aplicar las macros, tenía que validar el objeto elegido y dependiendo si estaba o no elegido un rango válido, corría el proceso.
Entrando en tema
La función se compone del nombre de la misma TypeName(variable) y la variable a validar como argumento. Se podrá utilizar con If, Select case, MsgBox, etc., ya sea para validar el valor o mostrar su tipo.
Ejemplos
- Si deseamos saber qué tipo es el objeto elegido.
- Range para rangos.
- ChartArea para gráficos.
- Picture para Imagen.
- etc., etc.
Sub test() MsgBox TypeName(Selection) End Sub
- Validar tipo de dato en celda
Sub test1() 'Validar numéricos (Integer, Double) Dim Celda As Range For Each Celda In Selection If TypeName(Celda.Value) = "Integer" Or _ TypeName(Celda.Value) = "Double" Then MsgBox "El valor " & Celda.Value & " sí es número" Else MsgBox "El valor " & Celda.Value & " no es número" End If Next Celda End Sub
- Mostrar el tipo de dato en celda.
Sub test2() 'Mostrar el tipo de dato en celda Dim Celda As Range For Each Celda In Selection MsgBox "El tipo de dato '" & Celda.Value & "' es: " & vbNewLine & vbNewLine & _ TypeName(Celda.Value) Next Celda End Sub