none
Como hacer que una Funcion hecha para un libro de Excel 2007,valga para todas las hojas del libro

    Question

  • Hola a todos,

    Pues eso.La Funcion funciona perfectamente para la Hoja1, pero no funciona para la Hoja2.Lo he probado despued de copiar la Hoja1 en la Hoja2.

    Alguien sabe que tengo que hacer para esa Funcion me valga para todas las Hojas del Libro?

    Gracias anticipadas


    • Edited by jorge234 Thursday, June 21, 2012 8:21 PM No era una Sub;era una Funcion
    Thursday, June 21, 2012 7:20 PM

Answers

  • Gracias, gracias a los dos por ayudarme a aclararme un poco,

    Ya se cual era el problema;el problema era que la primera vez que fincionó lo debi de poner en un modulo, y despues lo ponia en el panel que se mostraba tal como se abria el Visual Basic.

    Funciona perfectamente

    Saludos

    Tuesday, June 26, 2012 4:44 PM

All replies

  • Hola Jorge, no explicas donde pones la función (supongo que de VBA), debes ponerla en un módulo. En el menú (de VBA) Insertar > Módulo.

    Si sigues teniendo problemas pon tu código en el mensaje.

    Saludos,

    Xavier

    Sunday, June 24, 2012 6:19 PM
  • La solución dada en otro de los foros por mi: 

    Lo mejor es desarrollar un complemento de Microsoft Excel, para lo cual sigue los siguientes pasos:

    1. En Excel crear un Libro nuevo.

    2. Si no tienes la Solapa Programador en la Cinta de opciones, la puedes habilitar en Archivo / Personalizar cinta de opciones / Marcar Programador.

    3. En la Cinta de Opciones, ir a Programador / Macros. 

    4. Escribir el Nombre de la Macro, y presionar el botón Crear. Aquí debes de poder ponerle el nombre que desees.

    5. Escribir la Macro.

    6. Ir a Archivo Guardar como, y seleccionar el tipo Complemento Excel (*.xla). Esto es fundamental, para que Excel no considere este archivo como un Libro sino como un Complemento.

    7. Al Guardar, te va a sugerir copiar el archivo en la siguiente Carpeta (Windows 7 en mi caso y el Usuario Alejandro Garrido): C:\Users\Alejandro Garrido\AppData\Roaming\Microsoft\Complementos.

    8. Cierra Excel y vuelve a entrar.

    9. Ve a Archivo / Opciones, y en la parte de abajo selecciona en Administrar, Complementos de Excel, y presiona el botón Ir.

    10. Te va a aparecer en la lista el Complemento con el Nombre que guardaste el archivo XLA.

    11. Si son Funciones ya te van a quedar habilitadas.

    11. Si son Macros, debes agregar botones en la Cinta de Opciones, para esto ve a Archivo / Opciones / Personalizar Barra de Herramientas, en la derecha crea una nueva Ficha, luego un nuevo Grupo, y luego en la lista de la izquierda selecciona Macros y te mostrará tus Macros, arrástralas a la lista de la derecha para que te agregue los botones.

    12. Sal de Excel y vuelve a entrar, y verás mientras inicia que te va a mostrar que esta cargando los XLA que seleccionaste, y te aparecerán en la Cinta de Opciones los botones.

    Yo lo acabo de hacer con un ejemplo y está funcionando.

    Suerte.


    Alejandro Garrido Socio Director | ZetaConsulting E-mail: alejandro@zetasoftware.com | garridoalejandro@gmail.com Blog: garridoalejandro.blogspot.com Twitter: @garridoale

    Sunday, June 24, 2012 11:33 PM
  • Gracias Icaro_cat  por responder,

    Os explico:Hice una funcion llamada Terminar() que encontré en el libro que tengo, funcion que no estana en ninguna macro,  de la siguiente manera:

    Abri Excel 2007 y en la Hoja1 que aparece, Programador/Visual Basic y aparece el editot de VB, y en el escribo la funcion.

    Public Sub Terminar()
        If MsgBox("Desea salir del programa? ", vbQuestion + vbYesNo) = vbYes Then
        Application.Quit
        End If
    End Sub

    y en una celda de la Hoja escribo

    =Call Terminar()

    Eso funcionó una vez en esa Hoja (hoy eso no funciona, no me pretguntes por qué) pero no en otra y por eso puse el post.

    Tambien probé con una funcion.

    Si tu sabes por qué funcionó una vez y despues no, dimelo, o si debo de hacer algo para que funcione.

    Monday, June 25, 2012 2:42 PM
  • Al entrar en el editor de VBA, en lugar de crear la función en Hoja 1, crearla en ThisWorkbook, para que no dependa de las hojas del libro.

    Saludos.


    Alejandro Garrido Socio Director | ZetaConsulting E-mail: alejandro@zetasoftware.com | garridoalejandro@gmail.com Blog: garridoalejandro.blogspot.com Twitter: @garridoale

    Monday, June 25, 2012 4:32 PM
  • Gracias Alejandro,

    Pero deberia funcionar? porque ahora no funciona.Me escribe en la celda #NOMBRE#

    Se te ocurre algo del por qué no funciona?

    Saludos

    Monday, June 25, 2012 4:40 PM
  • Por lo menos hasta donde yo sé en una Celda no puedes llamar a un Procedimiento, puedes llamar a una Función, o sea que devuelva algo para ser procesado en la celda.

    Prueba por ejemplo escribir una función dentro de VBA del siguiente estilo:

    Public Function Prueba() As String
        MsgBox ("Prueba")
        Prueba = "Prueba"
    End Function

    Luego guardarla en un Complemento de Excel XLA.

    Y en una nueva planilla, escribir en una celda: =Prueba()

    El resultado es mostrará un Message Box y escribirá en la Celda el texto "Prueba".

    Saludos.


    Alejandro Garrido Socio Director | ZetaConsulting E-mail: alejandro@zetasoftware.com | garridoalejandro@gmail.com Blog: garridoalejandro.blogspot.com Twitter: @garridoale

    Monday, June 25, 2012 5:56 PM
  • Hola Jorge, supongo que estás ensayando con VBA... lo digo porque no tiene demasiado sentido cerrar Excel con un procedimiento como el tuyo. Se puede hacer desde el propio programa.

    Estoy de acuerdo con Alejandro en líneas generales. Pero podrías llamar al procedimiento (macro en lenguaje anterior) pulsando la combinación de teclas Alt+F8, seleccionas el que quieras, en tu caso solo tienes uno, y Ejecutar. Si en la ventana inferior tienes "Todos los libros abiertos" no tendrás dificultad desde cualquier hoja. Yo sigo pensando que es preferible editar el código en un módulo creado al efecto.

    Podrías simplificarlo más todavía y asignar una tecla rápida. Para ello desde la ventana de Macros selecciona "Opciones" y allí eliges una letra que pulsarás junto a Control. Mejor no utilizar teclas utilizadas por Excel, en este caso podrías poner "t" minúscula. Aceptar.

    Desde cualquier hoja pulsando Control+t se ejecutará la macro.

    Si quieres saber las teclas rápidas utilizadas por Excel en Ayuda busca "Teclas de función y de método abreviado de Excel"

    Saludos,

    Xavier

    Monday, June 25, 2012 7:31 PM
  • Gracias, gracias a los dos por ayudarme a aclararme un poco,

    Ya se cual era el problema;el problema era que la primera vez que fincionó lo debi de poner en un modulo, y despues lo ponia en el panel que se mostraba tal como se abria el Visual Basic.

    Funciona perfectamente

    Saludos

    Tuesday, June 26, 2012 4:44 PM