Usar BUSCARV en formulario de Excel vba e identificar texto o números

Este artículo podría considerarse uno más de los publicados con respecto al tema de la función BUSCARV, pero con detalles que no se habían tocado en otro artículo.

En el ejemplo adjunto tenemos una tabla que aloja el nombre del usuario o número telefónico y un respectivo código ficticio. También tenemos un formulario donde deberemos escribir el usuario o teléfono para traer de vuelta dicho su código.

Cómo funciona

La manera en la que nos traemos el código es mediante el uso de la función BUSCARV desde vba. Las funciones que regularmente usamos en celdas, en vba las podemos obtener mediante Application.WorksheetFunction.

Uso de BUSCARV en formulario de Excel vba

El primer paso será definir la matriz donde se buscarán los datos. Esto lo hacemos con la propiedad CurrentRegion del objeto Range, el cual tomará de referencia la celda A1.

Con la función IsNumeric se validará si el valor introducido en el formulario es número. En caso de ser núnero se hará una conversión al tipo Double para que el BUSCARV no genere al pensar que el valor es tipo texto.

En caso de no encontrar el valor en la tabla, se mostrará una etiqueta en el formulario indicando que el valor no fue encontrado (en una celda equivaldría al #N/A).

BUSCARV con Excel vba

Código vba

Option Explicit
'
Private Sub CommandButton1_Click()
'
'Declaramos las variables.
Dim Nombre As String
Dim Rango As Range
Dim NombreBuscado As Variant
Dim Titulo As String
'
Titulo = "EXCELeINFO"
'
'En caso de error...
On Error GoTo ErrorHandler
'
Set Rango = Sheets(1).Range("A1").CurrentRegion
'
'Validamos si el valor es numérico.
NombreBuscado = Me.TextBox1.Value
If IsNumeric(NombreBuscado) Then
    NombreBuscado = CDbl(NombreBuscado)
End If
'
'Asignamos a la variable Nombre el resultado del BUSCARV.
Nombre = Application.WorksheetFunction.VLookup(NombreBuscado, Rango, 2, 0)
'
'Pasamos el resultado al cuadro de texto (TextBox).
With Me
    .TextBox2.Value = Nombre
    .lblMensaje.Visible = False
End With
'
Exit Sub
'
'De haberse encontrado un error mostramos mensajes.
ErrorHandler:
If Err.Number = 1004 Then
    With Me
        .lblMensaje.Caption = "Email o teléfono no encontrado."
        .lblMensaje.Visible = True
    End With
Else
    MsgBox "Ha ocurrido un error: " & Err.Description, vbExclamation, Titulo
End If
End Sub
'
Private Sub UserForm_Initialize()
'
'Ocultamos controles.
With Me
    .TextBox2.Enabled = False
    .lblMensaje.Visible = False
End With
'
End Sub

Anexos

:: Descargar ejemplo Formulario de Buscarv con Excel vba.rar

You may also like...