Funciones predefinidas por el Usuario

12/08/2005 - 23:43 por Erik Copado Perez | Informe spam
Hola Grupo:
Tengo una duda y se las comento para ver si me pueden echar la mano.

En la empresa en donde trabajo desarrollo funciones personalizadas para
poder facilitar y automatizar procesos de captura de mi usuario final.

Cuando desarrollo una función, le pido a usuario que utilice el
asistente de Formulas para que las utilice, ya que varias de mis funciones
trabajan con rangos como parámetros como un
=Suma(A1:N3).

lo que quiero preguntarles es:
¿como se puede colocar mensajes de ayuda para cada parámetro de mis
funciones para que el asistente de formula los muestre y sea de mayor ayuda
para la gente?

Gracias por su atención.

Saludos,

Erik E. Copado Pérez
Sistemas
Antera, S.A. de C.V.
Tel: (55) 8503 2567
Fax: (55) 8503 2566 Ext.256
 

Leer las respuestas

#1 Héctor Miguel
13/08/2005 - 01:47 | Informe spam
hola, Erik !

... desarrollo funciones personalizadas para... facilitar y automatizar procesos de captura de mi usuario final.
... pido a usuario que utilice el asistente de Formulas
... ya que varias de mis funciones trabajan con rangos como parametros como un =Suma(A1:N3).
... como... colocar mensajes de ayuda para cada parametro de mis funciones para que el asistente... los muestre [...]



op1: [me parece que] la opcion mas 'barata' [por sencilla] pudiera ser...
a) dar a los argumentos [de tus funciones] nombres 'acordes' a su funcionamiento
[similares a los acostumbrados por las funciones incorporadas de la aplicacion]
y 'aprovechas' que los usuarios [normalmente] ya estan 'acostumbrados' a tales convencionalismos :))
b) 'cargar' con unos comentarios 'generales' a la funcion [no a cada argumento]
[aunque... solo estarian 'disponibles' si la funcion se ejecuta desde el asistente] :-(
-> te paso un ejemplo sencillo al final del presente ;)

op2: si [de todas formas] requieres de alternativas mas 'avanzadas'...
te paso [algo mas de] 'informacion' al respecto al final del presente :)

saludos,
hector.
=op1: ejemplo usando el metodo Application.MacroOptions... para una funcion personalizada:
el argumento 'Description' [que es el que] sirve para 'informar' al usuario +/- que hace [y algo de sus argumentos]...
-> tiene un limite de 255 caracteres :-(
-> tienes 'disponibles' [un maximo de] 4 lineas de texto :)
las 4 se muestran 'desde' que el usuario hace uso del asistente... en el primer dialogo [solamente]
una vez 'editando' los argumentos de la funcion [en el segundo dialogo] SOLO se muestran 2 lineas de texto :-((
[obviamente] el texto 'descriptivo' que estoy usando en el ejemplo 'excede' a los parametros necesarios ejemplificados ;)
y... la longitud del texto del ejemplo es ya de 245 carcteres [dispones de 10 mas, pero... con 11 -o mas-... FALLA] :-((
-> puedes especificar -ademas- a cual de las categorias de las funciones se integrara 'tu' funcion personalizada :))
= una funcion de ejemplo en un modulo de codigo 'normal' ==Function AF_Activo(ByVal Ref As Range) As Boolean
If Not Ref.Parent.AutoFilterMode Then Exit Function
Dim Filtro As Byte: Application.Volatile
With Ref.Parent.AutoFilter
If Intersect(Ref.Cells(1, 1), .Range) Is Nothing Then Exit Function
Filtro = Ref.Column - .Range.Column + 1: AF_Activo = .Filters(Filtro).On
End With
End Function
la 'carga' del texto 'inicial' de ayuda... en el modulo de codigo del libro [ThisWorkbook] ==Private Sub Workbook_Open()
Application.MacroOptions _
Macro:="AF_Activo", _
Description:="Devuelve Verdadero/Falso " & _
"si la referencia especificada tiene activados los AutoFiltros" & vbCr & _
"El argumento ""Ref"" DEBE SER una referencia de celda." & vbCr & _
"Otros argumentos segun sean requeridos." & vbCr & _
"Tercera y cuarta lineas de texto SOLO en el dialogo ""principal"".", _
Category:=9
End Sub
como informacion adicional... a partir de xl2000, estos son los numeros de cada categoria:
0 = Todas
1 = Financieras
2 = Fecha y Hora
3 = Matematicas y Trigonometricas
4 = Estadisticas
5 = Busqueda y Referencia
6 = Base de Datos
7 = Texto
8 = Logicas
9 = Informacion
10 = Comandos
11 = Personalizar
12 = Macro Control
13 = DDE / Externo
14 = Definidas por el Usuario
15 = Ingenieria

=op2: si quieres agregar 'descripciones' para los argumentos de la funcion [ademas de a la funcion]...
es necesario 'cargar' la funcion [y sus argumentos] en una libreria 'comun' [generalmente user(32).dll]
utilizando para ello otras funciones: REGISTER y UNREGISTER [para 'descargarla'], ademas de que...
-> esas funciones SOLO estan 'disponibles' a traves del metodo 'ExecuteExcel4Macro' del objeto Application
-> es necesario conocer [INDISPENSABLE para registrar] EXACTAMENTE el 'tipo' de datos [funcion y argumentos]
[despues 'entenderas mejor' este punto] :))
es un tema [escabroso por] 'dificil de explicar' [de manera 'sencilla'], mas no [imposible] de comprender.
de cualquier forma, [estoy seguro que son los mejores] los sitios donde encontraras informacion adecuada son:
1) en el sitio de John Walkenbach, en la seccion de Excel Expert E-Letter, Ejemplar #9 de fecha Julio 15, 1999
hay una seccion titulada: Power Programming Techniques created by Laurent Longre.
-> http://j-walk.com/ss/excel/eee/eee009.txt <- ['pasando' la mitad de la pagina]...
encontraras un ejemplo de [para 'empezar a entender'] su forma de uso.
2) en la pagina de su autor Laurent Longre [http://xcell05.free.fr/] encuentras informacion mas detallada
-> pulsa el boton de 'English page', revisa la seccion de 'funcustomize.dll' [libreria para personalizar funciones]
-> descarga/instala la libreria [y un XLA de ejemplo] en:
http://xcell05.free.fr/downloads/FunCustomize.zip

si [probablemente] quedaran dudas... comentas? o... comentas tu experiencia 'despues de...' ?

Preguntas similares