D. P. I. I.

INTEGRAR FUNCIONES VBA EN UNA HOJA EXCEL (Macros Excel)

Fecha de publicación: 08/03/2018
Autor: Antonio Espín Herranz

297 visitas


En este artículo técnico vamos a ver como podemos integrar una función de código VBA en una hoja Excel y utilizarla dentro de las fórmulas de Excel. Vamos a partir de una hoja Excel con una serie de datos sobre vehículos entre los que se encuentran el número de la matrícula y queremos generar una nueva columna donde se indique si la matrícula tiene un formato correcto o no. Serán matrículas europeas con 4 dígitos y 3 letras consonantes. A continuación se muestra un ejemplo con varias matrículas. En la columna fórmula insertaremos nuestra función personalizada.

macros,funcion,funciones,personalizadas,excel,function,sub,formulas,vba,formula codigo, articulos, tecnicos, programacion, informatica

La diferencia entre una macro y una función es que esta última devuelve un valor que es el que posteriormente asignaremos a una celda de la hoja. Para este ejemplo no podríamos utilizar una macro. Estas nos sirven para realizar una tarea pero no para integrarla en la hoja, como mucho podremos llamarla desde un botón o asignarla una opción de menú en la barra de herramientas.

Implementamos la función validar matricula dentro de una función de VBA. Recibirá como parámetro la matrícula a validar (como un String) y devolverá un Boolean para indicar si el formato es correcto o no.

Function validarMatricula(matricula As String) As Boolean
Dim patron As String
Dim correcta As Boolean
Dim vocales As Variant
Dim i As Integer

patron = "[0-9][0-9][0-9][0-9][A-Z][A-Z][A-Z]"
correcta = matricula Like patron
If correcta Then
   vocales = Array("A", "E", "I", "O", "U")
   For i = 0 To UBound(vocales)
      If InStr(1, matricula, vocales(i)) <> 0 Then
         correcta = False
         Exit For
      End If
   Next
End If
    
validarMatricula = correcta
End Function

En la función aplicamos un patrón de 4 dígitos y 3 letras mayúsculas para validar con like que nos devolverá True o False según se cumpla o no el patrón. Después lo que hacemos es controlar que no contenga vocales para ello utilizamos la función Instr para buscar una cadena dentro de otra cadena a partir de una posición. Devolverá 0 si no la encuentra.

Una vez tenemos implementada la función podemos insertarla en una hoja Excel como cualquier fórmula. Si nos situamos en una celda y pulsamos Fx para insertar una función y seleccionamos la categoría de Definida por el usuario veremos que aparece nuestra función validarMatricula

macros,funcion,funciones,personalizadas,excel,function,sub,formulas,vba,formula codigo, articulos, tecnicos, programacion, informatica

macros,funcion,funciones,personalizadas,excel,function,sub,formulas,vba,formula codigo, articulos, tecnicos, programacion, informatica

Una vez seleccionada la función podemos seleccionar una celda que será el parámetro de entrada (la matrícula a validar). Después arrastramos la celda para copiar la fórmula.

macros,funcion,funciones,personalizadas,excel,function,sub,formulas,vba,formula codigo, articulos, tecnicos, programacion, informatica

A continuación, adjunto enlaces a dos posibles cursos de macros de Excel y un enlace para descargar el código. Se ha probado con Excel 2016 pero funcionará hasta la 2007. Incluso en versiones anteriores siempre y cuando el fichero cumpla el formato.


Cursos recomendados:
VB01 VB02

Descarga código