Situación: hicimos una macro que debe encontrar el valor que le corresponde a otro dado, según una tabla. Dentro de la hoja la podemos hacer con la función BUSCARV, pero ¿cómo ponemos esa función dentro del código de la macro?

En principio, cualquier función de Excel se puede usar dentro de una macro siempre y cuando:

  • Escribimos su nombre en inglés.
  • Anteponemos la palabra clave WorksheetFunction.

En el caso de la función BUSCARV, el nombre correspon­diente en inglés es VLookup. Entonces, supongamos en el rango [A2:B6] una tabla de dos columnas, Región y Valor. Si en la celda [A8] tenemos escrita una de las regio­nes, obtenemos el valor que le corresponde con la función =BUSCARV(A8;A2:B6;2;FALSO). Hay cuatro argumentos den­tro de los paréntesis:

  • El primero es la región cuyo valor se quiere conocer.
  • El segundo es la tabla que relaciona región y valor.
  • El tercero indica que lo que estamos buscando, el valor, está en la segunda colum­na de la tabla.
  • El cuarto indica que la tabla no está ordenada.

Dentro de una macro, este resultado se obtiene con la siguiente instrucción:
WorksheetFunction.VLookup([A8], Range(“A2:B6”), 2, False).

Para conocer el nombre de la función en inglés, podemos marcar la opción [Lista de miembros automática] dentro de [Herramientas/Opciones/Editor]. Esto despliega una lista de nombres de función al escribir el punto luego de WorksheetFunction.

 

La función de la celda [A9] encuentra el valor que le corresponde a la región escrita en [A8] según la tabla. El último argumento (el valor lógico FALSO) indica que la tabla no está ordenada.
Esta macro usa la función VLookup (equivalente a BUSCARV) para encontrar el valor que le corresponde a la región escrita en [A8] según la tabla de [A2:B6].
Al escribir el punto luego de WorksheetFunction, aparece una lista de las funciones de Excel que podemos usar dentro de la macro.