



Necesitamos buscar un dato en una hoja o un libro y el resultado de BuscarV sobre una ventana de mensaje en lugar de en una celda.

Disponemos en la hoja el origen de datos, donde la columna A incluye el nombre del cliente y la columna D el importe de la venta, necesitando buscar el nombre del cliente y obtener el resultado del importe.
A | B | C | D | |
---|---|---|---|---|
1 | Nombre | Ref | Zona | Importe |
2 | Cliente 1 | 0001 | N | 1500 |
3 | Cliente 2 | 0002 | S | 2450 |
4 | Cliente 3 | 0003 | S | 6800 |
5 | Cliente 4 | 0004 | N | 8200 |
6 | Cliente 5 | 0005 | O | 1470 |
7 | Cliente 6 | 0006 | N | 1740 |
CREAR MACRO
Con Excel abierto.
Pulsar la tecla Alt y mantener pulsada
Pulsar la tecla F11. Mostrará el editor de Visual Basic.
Ir a: Barra de Menú
Insertar
Módulo. Mostrará la ventana del módulo donde escribimos la macro.
Escribir el código de la macro:
Sub MensajeBV()
Dim cliente As String
cliente = InputBox("Nombre del cliente:")
nombre =Application.WorksheetFunction.VLookup(cliente,
Hoja1.Range("A2:D7"), 4, False)MsgBox "El importe de las ventas a " & cliente &": " & nombre
End Sub
Guardar el libro con la extensión *.xlsm. Libro habilitado para macros.
EJECUTAR MACRO
Ir a: Cinta de opciones
Pestaña Desarrollador (en Excel 2013/2016/365) o Programador (Excel 2007 /2010)
Grupo: Código
Macros
; O también, pulsar el atajo de teclado Alt + F8. Mostrará la ventana de macros.
Seleccionar la macro MensajeBV.
Pulsar el botón Ejecutar. Para reproducir la macro.
Ir a la ventana de mensaje
Ir a nombre del cliente
Escribir: Cliente 3. O el nombre del cliente deseado para buscar su importe.
Pulsar el botón Aceptar. Cierra la ventana y muestra un mensaje con el resultado "El importe de las ventas a Cliente 3: 2450".

OCULTAR EL ERROR #N/A
Si empleamos la función BUSCARV de Excel y el valor buscado está vacío o no coincide con el valor del origen de los datos, Excel muestra el error #N/A.
Modificar el código anterior por el siguiente que incluye corrección para los errores.
Sub MensajeBV2()
On Error GoTo MiError:
Dim cliente As String
cliente = InputBox("Nombre del cliente:")
If Len(cliente) > 0 Then
nombre = Application.WorksheetFunction.VLookup(cliente, Hoja1.Range("A2:D7"), 4, False)
MsgBox "El importe de las ventas a " & cliente & ": " & nombre & " €"
Else
MsgBox ("Escribir el nombre para buscar un cliente")
End If
Exit Sub
MiError:
If Err.Number = 1004 Then
MsgBox "El nombre del cliente no se encuentra registrado."
End If
End Sub
- VALOR BUSCADO VACÍO
Sí no escribimos el nombre del cliente, mostrará un mensaje:

- VALOR BUSCADO NO COINCIDE
Sí el nombre del cliente no coincide con el origen de datos, mostrará un mensaje de aviso:

