Usar BUSCARV en formulario de Excel vba e identificar texto, números y fechas

Éste artículo que les comparto es una combinación de dos artículos publicados anteriormente en este mismo Blog y que nos muestran cómo usar la función BUSCARV o VLOOKUP desde vba.

Cómo funciona

Tenemos una lista con dos columnas, donde la primera columna almacenará datos numéricos, alfanuméricos y fechas. La función VLOOKUP arrojará el dato de la segunda columna si la búsqueda fue exitosa.

image

Figura 1. BUSCARV desde formulario de Excel vba.

En caso de que el valor buscado no exista en la tabla, se mostrará la leyenda “El valor [valoe] no fue encontrado”.

image

Figura 2. Al no encontrar el valor, se mostrará una leyenda indicándolo.

Regresar el “foco” al TextBox

Añadí a este ejemplo el procedimiento de regresarle el “foco” al TextBox donde se ingresa el valor a buscar, es decir, que cuando se ingrese el valor, si éste es válido o no, el cursos regresará al mismo TextBox. Esto lo logramos con el método SetFocus aplicado al TextBox:

Me.TextBox1.SetFocus

Código vba

Option Explicit
'
'---------------------------------------------------------------------------------------
' Module    : frmBUSCARV
' Author    : MVP Excel, Sergio Alejandro Campos
' Date      : 26/01/2015
' Purpose   : Uso de VLOOKUP identificando número, letras y fechas
'---------------------------------------------------------------------------------------
'
Private Sub CommandButton1_Click()
'
'Declaramos las variables.
Dim Nombre As Variant
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)
ElseIf IsDate(NombreBuscado) Then
    'NombreBuscado = CDate(NombreBuscado)
    NombreBuscado = CLng(CDate(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
    .TextBox1.SetFocus
End With
'
Exit Sub
'
'De haberse encontrado un error mostramos mensajes.
ErrorHandler:
If Err.Number = 1004 Then
    With Me
        .lblMensaje.Caption = "El valor '" & NombreBuscado & "' no fue encontrado."
        .lblMensaje.Visible = True
        .TextBox1.SetFocus
    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

:: Descarga el ejemplo Formulario de Buscarv con Excel vba identificando números, letras y fechas.rar

You may also like...