Crear un Boton para una funcion

28/08/2007 - 01:30 por yuyo_79 | Informe spam
Cuando Creo una funcion, por ejemplo:
Function cagr(v0, vf, y0, yf)
cagr = ((vf / v0) ^ (1 / (yf - y0))) - 1

End Function

Como puedo crear un boton que pueda poner en la barra de herramientas de
excel que al presionarlo me abra el cuadro de "Function Arguments" para que
yo pueda ingresar los 4 valores que tiene mi funcion.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
28/08/2007 - 02:27 | Informe spam
hola, (...) ?

Cuando Creo una funcion, por ejemplo:
Function cagr(v0, vf, y0, yf)
cagr = ((vf / v0) ^ (1 / (yf - y0))) - 1
End Function

Como puedo crear un boton que pueda poner en la barra de herramientas de excel
que al presionarlo me abra el cuadro de "Function Arguments"
para que yo pueda ingresar los 4 valores que tiene mi funcion.



si quieres *evtarte la fatiga* de andar navegando por las funciones disponibles hasta encontrar la tuya...
necesitaras emplear el metodo sedkeys para proveer el nombre de tu funcion [asumiendo que siempre estara disponible]
con un procedimiento [o macro] +/- como alguno de los siguientes [puedes asignarlo a un atajo de teclado y/o a un objeto]

op1: insertar la funcion directamente en la celda/barra de formulas con los argumentos *desplegados* y listos para ser *sustituidos*:

Sub Pegar_mi_funcion()
On Error Resume Next
SendKeys "^+a"
SendKeys "=cagr("
End Sub

op2: a traves del dialogo integrado del asistente para pegar funciones:

Sub Pegar_funcion_personalizada()
SendKeys "cagr~"
Application.Dialogs(xlDialogFunctionWizard).Show
End Sub

[creo que] sobra mencionar que para que un procedimiento se ejecute, la aplicacion debera estar en *modo* de Listo
NO en modo de edicion/introduccion de datos ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 yuyo_79
28/08/2007 - 17:34 | Informe spam
Hola Hector,
Oye muchas gracias por la respuesta. Sigo teniendo un problema por si me
puedes ayudar.

En el function Wizard (el recuadro de "Insert a Function"), no se si falte
una definicion o algo, porque si esta mi funcion "cagr" pero al escribirla y
buscarla nunca la encuentra, que puedo hacer?

Una vez la encuentra con el lenguaje que me diste:
SendKeys "cagr~"
Application.Dialogs(xlDialogFunctionWizard).Show
no llega hasta el cuadro de la funcion donde puedo ingrasar ya todos los
valores, es posible llegar a hasta este ultimo paso?

De nuevo muchas gracias,

saludos,

Diego

"Héctor Miguel" escribió:

hola, (...) ?

> Cuando Creo una funcion, por ejemplo:
> Function cagr(v0, vf, y0, yf)
> cagr = ((vf / v0) ^ (1 / (yf - y0))) - 1
> End Function
>
> Como puedo crear un boton que pueda poner en la barra de herramientas de excel
> que al presionarlo me abra el cuadro de "Function Arguments"
> para que yo pueda ingresar los 4 valores que tiene mi funcion.

si quieres *evtarte la fatiga* de andar navegando por las funciones disponibles hasta encontrar la tuya...
necesitaras emplear el metodo sedkeys para proveer el nombre de tu funcion [asumiendo que siempre estara disponible]
con un procedimiento [o macro] +/- como alguno de los siguientes [puedes asignarlo a un atajo de teclado y/o a un objeto]

op1: insertar la funcion directamente en la celda/barra de formulas con los argumentos *desplegados* y listos para ser *sustituidos*:

Sub Pegar_mi_funcion()
On Error Resume Next
SendKeys "^+a"
SendKeys "=cagr("
End Sub

op2: a traves del dialogo integrado del asistente para pegar funciones:

Sub Pegar_funcion_personalizada()
SendKeys "cagr~"
Application.Dialogs(xlDialogFunctionWizard).Show
End Sub

[creo que] sobra mencionar que para que un procedimiento se ejecute, la aplicacion debera estar en *modo* de Listo
NO en modo de edicion/introduccion de datos ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.



Respuesta Responder a este mensaje
#3 Héctor Miguel
28/08/2007 - 18:29 | Informe spam
hola, Diego !

... Sigo teniendo un problema por si me puedes ayudar.
En el function Wizard (el recuadro de "Insert a Function"), no se si falte una definicion o algo
porque si esta mi funcion "cagr" pero al escribirla y buscarla nunca la encuentra, que puedo hacer?
Una vez la encuentra con el lenguaje que me diste:
SendKeys "cagr~"
Application.Dialogs(xlDialogFunctionWizard).Show
no llega hasta el cuadro de la funcion donde puedo ingrasar ya todos los valores, es posible llegar a hasta este ultimo paso?



*ese* es uno de los *imponderables* por los cuales [generalmente] no es *confiable* el uso del metodo SendKeys :-((

1) la secuencia del teclado se envia [solo] hasta que se muestra el dialogo de pegar funcion [o el que sea que se este mostrando]
2) la propuesta equivale a seleccionar *directamente* la funcion [cagr] entre la lista de las disponibles -> en la categoria mostrada <= OJO
3) como una funcion personalizada se *instala* [por omision] en la categoria de las *definidas por el usuario*...
a) NO es la primera categoria seleccionada... *por omision*
b) es necesario *navegar* por el dialogo para seleccionar primero la categoria y despues la funcion
c) *asumiendo* que usas excel en espanol, las teclas de navegacion serian +/- las siguientes:
1) habilitar la lista de categorias: -> {Alt}+C [en codigo vba es "%c"
2) seleccionar la categoria de definidas por el usuario: -> {tecla} "d"
3) pulsar la tecla {tab}
4) seleccionar la funcion correspondiente -> las pulsaciones: -> "cagr"
5) pulsar la tecla {enter}: -> ~

Sub Pegar_funcion_personalizada()
SendKeys "%cd{tab}cagr~"
Application.Dialogs(xlDialogFunctionWizard).Show
End Sub

4) si el excel NO es en espanol... [obviamente] las pulsaciones de teclado serian... *otras*

saludos,
hector.

__ las consultas anteriores __
> Cuando Creo una funcion, por ejemplo:
> Function cagr(v0, vf, y0, yf)
> cagr = ((vf / v0) ^ (1 / (yf - y0))) - 1
> End Function
>
> Como puedo crear un boton que pueda poner en la barra de herramientas de excel
> que al presionarlo me abra el cuadro de "Function Arguments"
> para que yo pueda ingresar los 4 valores que tiene mi funcion.

si quieres *evtarte la fatiga* de andar navegando por las funciones disponibles hasta encontrar la tuya...
necesitaras emplear el metodo sedkeys para proveer el nombre de tu funcion [asumiendo que siempre estara disponible]
con un procedimiento [o macro] +/- como alguno de los siguientes [puedes asignarlo a un atajo de teclado y/o a un objeto]

op1: insertar la funcion directamente en la celda/barra de formulas con los argumentos *desplegados* y listos para ser *sustituidos*:

Sub Pegar_mi_funcion()
On Error Resume Next
SendKeys "^+a"
SendKeys "=cagr("
End Sub

op2: a traves del dialogo integrado del asistente para pegar funciones:

Sub Pegar_funcion_personalizada()
SendKeys "cagr~"
Application.Dialogs(xlDialogFunctionWizard).Show
End Sub

[creo que] sobra mencionar que para que un procedimiento se ejecute, la aplicacion debera estar en *modo* de Listo
NO en modo de edicion/introduccion de datos ;)
Respuesta Responder a este mensaje
#4 yuyo_79
28/08/2007 - 20:10 | Informe spam
Hector,

Muchas gracias por tu ayuda, ya pude solucionar todo sin problemas.

"Héctor Miguel" escribió:

hola, Diego !

> ... Sigo teniendo un problema por si me puedes ayudar.
> En el function Wizard (el recuadro de "Insert a Function"), no se si falte una definicion o algo
> porque si esta mi funcion "cagr" pero al escribirla y buscarla nunca la encuentra, que puedo hacer?
> Una vez la encuentra con el lenguaje que me diste:
> SendKeys "cagr~"
> Application.Dialogs(xlDialogFunctionWizard).Show
> no llega hasta el cuadro de la funcion donde puedo ingrasar ya todos los valores, es posible llegar a hasta este ultimo paso?

*ese* es uno de los *imponderables* por los cuales [generalmente] no es *confiable* el uso del metodo SendKeys :-((

1) la secuencia del teclado se envia [solo] hasta que se muestra el dialogo de pegar funcion [o el que sea que se este mostrando]
2) la propuesta equivale a seleccionar *directamente* la funcion [cagr] entre la lista de las disponibles -> en la categoria mostrada <= OJO
3) como una funcion personalizada se *instala* [por omision] en la categoria de las *definidas por el usuario*...
a) NO es la primera categoria seleccionada... *por omision*
b) es necesario *navegar* por el dialogo para seleccionar primero la categoria y despues la funcion
c) *asumiendo* que usas excel en espanol, las teclas de navegacion serian +/- las siguientes:
1) habilitar la lista de categorias: -> {Alt}+C [en codigo vba es "%c"
2) seleccionar la categoria de definidas por el usuario: -> {tecla} "d"
3) pulsar la tecla {tab}
4) seleccionar la funcion correspondiente -> las pulsaciones: -> "cagr"
5) pulsar la tecla {enter}: -> ~

Sub Pegar_funcion_personalizada()
SendKeys "%cd{tab}cagr~"
Application.Dialogs(xlDialogFunctionWizard).Show
End Sub

4) si el excel NO es en espanol... [obviamente] las pulsaciones de teclado serian... *otras*

saludos,
hector.

__ las consultas anteriores __
>> > Cuando Creo una funcion, por ejemplo:
>> > Function cagr(v0, vf, y0, yf)
>> > cagr = ((vf / v0) ^ (1 / (yf - y0))) - 1
>> > End Function
>> >
>> > Como puedo crear un boton que pueda poner en la barra de herramientas de excel
>> > que al presionarlo me abra el cuadro de "Function Arguments"
>> > para que yo pueda ingresar los 4 valores que tiene mi funcion.
>>
>> si quieres *evtarte la fatiga* de andar navegando por las funciones disponibles hasta encontrar la tuya...
>> necesitaras emplear el metodo sedkeys para proveer el nombre de tu funcion [asumiendo que siempre estara disponible]
>> con un procedimiento [o macro] +/- como alguno de los siguientes [puedes asignarlo a un atajo de teclado y/o a un objeto]
>>
>> op1: insertar la funcion directamente en la celda/barra de formulas con los argumentos *desplegados* y listos para ser *sustituidos*:
>>
>> Sub Pegar_mi_funcion()
>> On Error Resume Next
>> SendKeys "^+a"
>> SendKeys "=cagr("
>> End Sub
>>
>> op2: a traves del dialogo integrado del asistente para pegar funciones:
>>
>> Sub Pegar_funcion_personalizada()
>> SendKeys "cagr~"
>> Application.Dialogs(xlDialogFunctionWizard).Show
>> End Sub
>>
>> [creo que] sobra mencionar que para que un procedimiento se ejecute, la aplicacion debera estar en *modo* de Listo
>> NO en modo de edicion/introduccion de datos ;)



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida