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.
  1. Range para rangos.
  2. ChartArea para gráficos.
  3. Picture para Imagen.
  4. 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

You may also like...