Un tema recurrente en los habituales de la programación de VBA para Excel siempre ha sido poder incorporar a nuestras funciones personalizadas, los textos descriptivos a cada argumento de la función (UDF), de manera simialr a como aparecen en el resto de funciones estándar.
Aprovechando la cuestión planteada por un usuario daremos solución al tema:
...Necesito saber cómo puedo programar mis propios tooltips en las funciones personalizadas de Exel que yo haga, igual como se muestran cuando uno digita cualquier función de Excel, que muestra en un recuadro y marcado con negrita los diferentes argumentos que se usan en cada función.
Ya sé crear mis propias funciones pero solo me falta agregarles ese detalle que lo considero importante... |
Hace ya bastante tiempo expliqué, en versiones en versiones anteriores cómo asignar una UDF a una categoría dentro de la biblioteca de funciones o como incorporarle una descripción general...ver; sin embargo hoy, y para versiones de Excel 2010 y superiores, veremos como Microsoft ha habilitado un mayor control sobre nuestras funciones, permitiendo, fácilmente añadir descripciones para nuestros diferentes argumentos.
Partiremos de una sencilla UDF creada por nosotros, por ejemplo:
Function FxExcelforo(Texto1 As String, Texto2 As String, Separador As String) As String
'Devuelve una cadena que se creó uniendo subcadenas contenidas en una matriz.
FxExcelforo = Join(Array(Texto1, Texto2), Separador)
End Function
El siguiente código lo añadiremos nuestro código asociándolo a un Módulo; para ello accederemos a la ventana de código del explorador del editor de VBA. Es importante ejecutarlo para ver reflejados los cambios sobre nuestra UDF:
Sub DescribeFxExcelforo()
'A ejecutar una vez para añadir características a nuestra función
'definimos las variables a emplear...
Dim NombreFx As String
Dim DescripFx As String
Dim Categoria As String
'generamos una matriz de 3 elementos, uno por cada elementos/argumento de nuestra función
Dim DescripArgumentos(1 To 3) As String
'les asignamos valor
NombreFx = "FxExcelforo"
DescripFx = "Devuelve concatenada los dos primeros argumentos, empleando el caracter 'separador'."
Categoria = 7 'La categoría incluye nuestra función personalizada como tipo TEXTO
DescripArgumentos(1) = "Primera Cadena de texto a unir."
DescripArgumentos(2) = "Segunda Cadena de texto a unir."
DescripArgumentos(3) = "Caracter empleado como 'Separador'"
'Aplicamos el método MacroOptions
Application.MacroOptions _
Macro:=NombreFx, _
Description:=DescripFx, _
Category:=Categoria, _
ArgumentDescriptions:=DescripArgumentos 'nuevo parámetro del método
'que inserta las descripciones de los argumentos de una UDF
'que se muestran en el cuadro de diálogo Argumentos de función.
End Sub
Tras ejecutar nuestro procedimiento Sub, veremos en la ventana diálogo de la función, las diferentes descripciones añadidas para cada argumento, así como la descripción general de la función.... como vemos en la imagen siguiente:
Observamos remarcado en amarillo la descripción del argumento, y en rojo la descripción general de la función.. coincidente con los textos indicados en el procedimiento 'DescribeFxExcelforo'.