Excel - Uso de macros dentro de una función de usuario

 
Vista:
Imágen de perfil de Alfonso
Val: 3
Ha disminuido 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Uso de macros dentro de una función de usuario

Publicado por Alfonso (4 intervenciones) el 23/12/2019 10:03:01
Hola, he elaborado una macro que invoca la herramienta de búsqueda de objetivo para obtener un resultado, y me funciona perfectamente. Mi duda es si sería posible integrar esa macro dentro de una función de usuario? No sé si ambas cosas son compatibles. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alfredo
Val: 361
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Uso de macros dentro de una función de usuario

Publicado por Alfredo (100 intervenciones) el 23/12/2019 16:26:44
Hola Alfonso

Claro que se puede

1.- Abre un libro nuevo y deja solo una hoja
2.- inserta un modulo y escribe en el tu código dentro de una función publica
3.- Guarda tu archivo como "Complemento de Excel" (xlam)
4.-Dentro de excel te vas a OPCIONES, Complementos de Excel, Pulsa en el boton Ir, luego en examinar, buscas tu archivo y das aceptar

Tu archivo sera cargado siempre que uses excel y tu función estará disponible dentro del cuadro de funciones definidas por el usuario o escribiéndola como cualquier otra función de excel

Si deseas que que en el cuadro de dialogo aparezca una breve descripción de tu macro, pon en Workbook_Open el siguiente código ANTES de guardar el archivo:

Application.MacroOptions Macro:="Nombre_De_Tu_Macro", Description:="Descripcion_de_tu_Macro", Category:=14

Te adjunto un ejemplo para que te des una idea, PERO tu macro solo sera cargada en tu excel, si intentas usar tu macro en otra computadora que no tengan tu complemento no servirá, ya que solo esta en tu PC

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alfonso
Val: 3
Ha disminuido 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Uso de macros dentro de una función de usuario

Publicado por Alfonso (4 intervenciones) el 23/12/2019 23:28:09
Hola. Gracias por su respuesta. Mi duda sigue siendo si la invocación a goal seek que funciona en la macro es trasladable a una función.

La macro es muy sencilla:

1
2
3
Sub buscarobjetivo()
  Range("Resultado").GoalSeek Goal:=Range("Objetivo"), ChangingCell:=Range("Input")
End Sub

Resultado, Objetivo e Input son nombres definidos en la hoja. Yo quisiera poder definir una función que diera como resultado el input obtenido tras ejecutar goal seek
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alfredo
Val: 361
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Uso de macros dentro de una función de usuario

Publicado por Alfredo (100 intervenciones) el 24/12/2019 01:14:40
Claro, Alfonso, de hecho Goal Seek se encuentra muy integrada a Excel, tu función podría quedar mas o menos así:

1
2
3
4
5
Public Function BuscaObjetivo(xR As Range, xO As Range, xI As Range)
   '
  BuscaObjetivo=Range(xR).GoalSeek Goal:=Range(xO), Changingcell:=Range(xI)
   '
End Function

Y para llamarla usarías los nombres definidos como parámetros P.ej:

=BuscaObjetivo(Resultado,Objetivo,Imput)

En esta dirección encontraras el uso de GoalSeek dentro de una macro https://techlandia.com/utilizar-goal-seek-visual-basic-como_145103/

Por falta de tiempo no he realizado pruebas en algún archivo

Prueba y ya nos comentaras

Saludos

P.D. Adapta el tipo de datos de la función a tus datos reales y no olvides escribir algún tipo de control de errores
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de alfonso
Val: 3
Ha disminuido 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Uso de macros dentro de una función de usuario

Publicado por alfonso (4 intervenciones) el 27/12/2019 12:00:13
Hola, he probado tu propuesta pero me da un error de compilación. Adjunto mi fichero original con la sencilla macro que uso para buscar objetivo. La idea es poder hacerlo desde una función de usuario. En la web encuentro muchos ejemplos de uso desde macros, pero no con una función de usuario......Gracias por tu ayuda y felices fiestas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alfredo
Val: 361
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Uso de macros dentro de una función de usuario

Publicado por Alfredo (100 intervenciones) el 28/12/2019 19:40:58
Hola Alfonso, perdona la tardanza en ver tu respuesta.

Efectivamente tienes razón, una de las cualidades de una función en Excel es que te devuelve un valor, y en el cuerpo del evento GoalSeek, específicamente en segundo parámetro indica la dirección donde será devuelta la incógnita de la función.

En razón de lo anterior, la función tal como la que te propuse anteriormente tendría que ir en la celda C4 (Input), pero Excel mandaría un error de "Referencia Circular" y no efectúa calculo alguno y al usarla en una celda diferente, partiendo del supuesto que la función GoalSeek tiene incluido dentro de sus parámetros la celda de retorno, entra en conflicto con el retorno que la misma función de usuario debe devolver.

Disculpa, haberte hecho esperar ya que como te mencione por falta de tiempo no realicé ninguna prueba

Si son muchos objetivos que necesitas resolver, podrías ponerlos en forma lineal y mediante un bucle For-Next recorrer todas las filas o columnas.


Saludos y nuevamente disculpas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Uso de macros dentro de una función de usuario

Publicado por Alfonso (4 intervenciones) el 07/01/2020 15:55:05
Gracias por tu ayuda. He seguido buscando y no encuentro la forma de integrar la macro dentro de la función. No sé puede tener todo.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar