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.
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
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.
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).
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