Curso Excel VBA y Macros – Cap. 37 – Crear categoría para tus funciones y agregar descripción

<<CURSO COMPLETO EN YOUTUBE>>

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.

Categoría personalizada para funciones UDF.

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

<<CURSO COMPLETO EN YOUTUBE>>

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.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *