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.
Ver video Identificar valores de texto, número y fecha en Formulario con BUSCARV
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
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.
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”.
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