Como ejecutar dos macros a la vez ????

4 envíos / 0 nuevos
Último envío
eugeniocol
Imagen de eugeniocol
Offline
última acción: Hace 2 años 3 meses
Nivel 1 - 200 puntos
alta: 29/08/2017 - 17:21
Puntos: 1675
Como ejecutar dos macros a la vez ????

Hola buenas.

 

Como podria desde una macro ejecutar dos macros  a la vez, siendo una de ellas Activex y la otra macro normal:

 

Sub Copia ()

 

En Sub

 

Private Sub CommandButton1_Click()

 

End With
End Sub

Salud2.....

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 2 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
No entiendo.Por orden. Las

No entiendo.

Por orden. Las macros no son normales o activex. Lo que sí es así son los controles, que hay algunos que son ActiveX y otros normales. Esto entendiendo que la pregunta está en su sitio, que es Excel. En Access hay alguna variedad más.

Por otro lado, no se pueden ejecutar dos macros a la vez. La ejecución de Visual Basic para Aplicaciones es lineal y no permite ejecuciones en paralelo. Bueno, en realidad sería posible si llamas a un DLL programado en algún lenguaje que sí permita programación multihilo desde VBA, pero eso ya son palabras mayores, y no creo que sea lo que estás pidiendo.

Creo que lo mejor sería que reformules la pregunta, si puede ser poniendo un ejemplo, y, mejor aún, indicando en qué línea estás atascado.

 

Un saludo

Andrés Montaña
Imagen de Andrés Montaña
Offline
última acción: Hace 4 años 9 meses
alta: 25/07/2018 - 00:10
Puntos: 135
Hola. al leer tu pregunta:

Hola. 

al leer tu pregunta: ¿Como ejecutar dos macros a la vez ? creo que no se puede pues VBA ejecuta linialmente 


pero puedes dar la impresion que si

mira, me explico con el siguiente ejemplo-codigo 

Option Explicit

Dim tiempo1 As Date

Dim tiempo2 As Date


Sub llamda()


Call rutinaTiempo

Call rutinaTiempo2


End Sub




Sub rutinaTiempo()


Hoja1.Range("A1").Value = Hoja1.Range("A1").Value + 1

tiempo1 = DateAdd("s", 10, Time)

Application.OnTime tiempo1, "rutinaTiempo"

End Sub



Sub rutinaTiempo2()


Hoja1.Range("A2").Value = Hoja1.Range("A2").Value + 1

tiempo2 = DateAdd("s", 10, Time)

Application.OnTime tiempo2, "rutinaTiempo2"

End Sub



Sub rutinaCancelar1()

On Error Resume Next

Application.OnTime tiempo1, "rutinaTiempo", , False

End Sub



Sub rutinaCancelar2()

On Error Resume Next

Application.OnTime tiempo2, "rutinaTiempo2", , False

 

End Sub

 

si ejecutas el procedimiento llamada, este "llama" a las macro  rutinaTiempo y RutinaTiempo2 las cuales cada 10 segundos suma el valor  de la celda A1 y A2 (respectivamente para cada procedimiento) por lo que da la impreson que las macros se ejecutan al mismo tiempo ( o por lo menos con una diferencia infinitesimal e inpersectible que da esa sensación)

podiras especificar la hora en especifico en la que quieres ejecutar ambas macros y pasarlas como valor en dichas macros: algo asi 

sub llamas ()

tiempo="la hora que quieres"

call macro1(tiempo)

call macro2(tiempo)

end sub 

sub macro1(ByVal tiempo)

end sub

sub macro2(ByVal tiempo)

end sub

 

PDT: los procedimientos cancelar son importantes o de no la macro se ejecutara siempre (hasta que no la pares con ellos) 

PDT2: se que lo que expongo se desvia un poco del tema de lo que quieres, pero espero que te sirva de punto de partida. me dejas saber que tal te va y espero tambien no haberte liado mas

 

Andres Montaña

anfemonga @ gmail.com

eugeniocol
Imagen de eugeniocol
Offline
última acción: Hace 2 años 3 meses
Nivel 1 - 200 puntos
alta: 29/08/2017 - 17:21
Puntos: 1675
respuesta

quizas no fue la explicacion idonea de que se ejecute a la vez, logicamente primero una y despues otra.

Explicacion de nuevo, estas son las dos macros esta esta en hoja:

Dim hoja As String
Private Sub CommandButton1_Click()

 

Next A
End Sub

 

Private Sub resumen()
On Error Resume Next
With Sheets(hoja)

End With
End Sub

y esta en modulo:

 

Sub Copia ()

En Sub

Yo he probado de esta forma, con Call delante y sin el

Sub Ejecutar ()

 

CommandButton1_Click

 

Copia

En Sub

 

Da error la macro CommandButton1_Click " no se ha definido Sub o Function""

 

 

 

la macro Copia sin problemas se ejecuta

 

 

Salud2...