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