Curso Excel VBA y Macros – Cap. 37 – Crear categoría para tus funciones y agregar descripción
A estas alturas ya deberemos saber cómo crear nuestras propias funciones personalizadas UDF (User-defined functions), tanto de un argumento como de varios, además de añadir argumentos opciones.
En este video tutorial aprenderás a usar el método MacroOptions para añadir tus funciones UDF a alguna categoría de funciones de Excel o incluso a crear tu propia categoría para agruparlas.
El video está pensado para que las funciones UDF que tengas las puedas usar directamente en celdas, aunque como sabes, también las puedes llamar desde otros procedimientos.
Ver video Capítulo 37 Excel VBA & Macros
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Método MacroOptions para crear categoría de funciones
MacroOptions se refiere al cuadro de diálogo Opciones de macro. Puede usarse para añadir una UDF a alguna categoría existente en Excel, así como crear una nueva categoría.
Figura 1. Categoría personalizada para funciones UDF.
Si se decide crear una nueva categoría, ésta solo estará disponible mientras el archivo que contenga las funciones esté abierto. Si deseas que la categoría y funciones estén siempre disponibles se pueden añadir a un complemento o add-in, como EXCELeINFO add-in.
Sintaxis de MacroOptions
Application.MacroOptions Macro, Description, Category, ArgumentDescriptions
Donde:
Parámetro |
Descripción |
Macro |
Es el nombre de la función personalizada, definida por el usuario (UDF). |
Description |
La descripción de lo que macro devuelve. |
Category |
La categoría a la que desea agregar la función. Puede usarse un valor entero para asignarla a una categoría existente o ingresar un valor de texto para crear una nueva categoría. Las categorías se mostrarán en el cuadro de diálogo Insertar función. |
ArgumentDescriptions |
Cada uno de los argumentos de la función. |
HasShortcutKey |
Se especifica True para indicar que la función tiene un método abreviado, además de asignarlo en ShortcutKey. Si se usa False se eliminará el método abreviado de una macro en caso de que lo tenga. |
ShortcutKey |
Usar este parámetro si HasShortcutKey es True. |
Categorías de las funciones
Excel cuenta con categorías definidas para separarlas por tipo. En la siguiente tabla vemos las funciones existentes desde el valor 1 al 14. Cualquier función UDF nueva será agregada a la categoría 14, Definidas por el usuario.
Hay que notar que tenemos hasta 18 espacios para crear categorías personalizadas.
Entero |
Categoría |
1 |
Financieras |
2 |
Fecha y hora |
3 |
Matemáticas y trigonométricas |
4 |
Estadísticas |
5 |
Búsqueda y referencia |
6 |
Base de datos |
7 |
Texto |
8 |
Lógicas |
9 |
Información |
10 |
Comandos |
11 |
Personalización |
12 |
Control de macros |
13 |
DDE/Externas |
14 |
Definidas por el usuario |
15 |
Primera categoría personalizada |
16 |
Segunda categoría personalizada |
17 |
Tercera categoría personalizada |
18 |
Cuarta categoría personalizada |
19 |
Quinta categoría personalizada |
20 |
Sexta categoría personalizada |
21 |
Séptima categoría personalizada |
22 |
Octava categoría personalizada |
23 |
Novena categoría personalizada |
24 |
Décima categoría personalizada |
25 |
Undécima categoría personalizada |
26 |
Duodécima categoría personalizada |
27 |
Decimotercera categoría personalizada |
28 |
Decimocuarta categoría personalizada |
29 |
Decimoquinta categoría personalizada |
30 |
Decimosexta categoría personalizada |
31 |
Decimoséptima categoría personalizada |
32 |
Decimoctava categoría personalizada |
Código VBA de las macros
El siguiente código es de dos funciones UDF.
Option Explicit Function ExtraeNumeros(Texto As Variant) Dim Largo As Integer Dim i As Integer Dim Valor As String Dim Valor1 As String Application.Volatile Largo = VBA.Len(Texto) For i = 1 To Largo Valor = VBA.Mid(Texto, i, 1) If VBA.Asc(Valor) >= 48 And VBA.Asc(Valor) <= 57 Then Valor1 = Valor1 & Valor Else 'Nada End If Next i ExtraeNumeros = Valor1 End Function Function ConvertirTexto(Texto As String, Optional Tipo As Variant) Application.Volatile If VBA.IsMissing(Tipo) Then Tipo = 0 ConvertirTexto = Texto Else Select Case Tipo Case 1 ConvertirTexto = VBA.UCase(Texto) Case 2 ConvertirTexto = VBA.LCase(Texto) Case Else ConvertirTexto = VBA.CVErr(xlErrValue) End Select End If End Function
El siguiente código es de la macro que crea la categoría “Mi categoría”.
Option Explicit Private Sub CrearCategoria() Dim NombreFuncion As String Dim DescFuncion As String Dim Categoria As String Dim DescArgs() As String ReDim DescArgs(1 To 1) NombreFuncion = "ExtraeNumeros" DescFuncion = "Devuelve los caracteres numéricos de una referencia o celda." Categoria = "MiCategoria" DescArgs(1) = "Es la celda o refencia que contiene el texto que se extraerá" Application.MacroOptions _ Macro:=NombreFuncion, _ Description:=DescFuncion, _ Category:=Categoria, _ ArgumentDescriptions:=DescArgs ReDim DescArgs(1 To 2) NombreFuncion = "ConvertirTexto" DescFuncion = "Convierte un texto en minúsculas o MAYÚSCULAS." Categoria = "MiCategoria" DescArgs(1) = "Es la celda que contiene el texto a convertir." DescArgs(2) = "Opcional. Es la opción a convertir. 1 = MAYÚSCULAS, 2 = minúsculas" Application.MacroOptions _ Macro:=NombreFuncion, _ Description:=DescFuncion, _ Category:=Categoria, _ ArgumentDescriptions:=DescArgs End Sub
Descarga el archivo de ejemplo
037 – MacroOption Agrupar funciones en una categoría.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.