Execucion de Macros

05/06/2007 - 23:22 por Albino | Informe spam
Olá
Tengo una ignorancia para poner en el grupo.
Tengo un livro con varias hojas e algunas macros.
Las macros se usan en una determinad orden, pero acontece que por veces los
usorarios no respectan la orden de activacion de las mismas, lo que reulta
duplicacion de datos quando los mismos clican dos veces en la misma macro.
Como una de ellas hace aumentar la numeracion, resulta que los nº de pedidos
no sea correcto.
Lo que me convenia seria que las mismas macros solo se pudessen activar uma
vez, és decir solo seria possibile executar-la una segunda vez despues de
executar la otra.
Quando essa misma situacion se verificara, deveria de aparecer un aviso.
Muchas gracias
Albino.
 

Leer las respuestas

#1 Ivan
09/06/2007 - 02:05 | Informe spam
On 8 jun, 22:34, "Albino" wrote:
Olá Carlos.
No me salió nada, a ver se lo ice bien, pienso que no, és assi:
Tengo mis 2 Macros en un modulo "Module1" se lhaman, Sub Macro1() e Sub Macro2().
Entonces yo crie un "Modulo" nuevo "Mddule2" crie ai una macro como decias
________________
Sub Consolidado()
Sub Macro1()
Sub Macro2()
End Sub_______________
Después é puesto en el inicio de cada macro lo seguiente
______________________
Private Sub Macro1()
'el código de la macro
End Sub
y
_______________
Private Sub Macro2()
'el código de la macro
End Sub
Con un boton en la hoja2 atrbui la Macro "Sub Consolidado()" al dicho boton
Pero quando executava la macro de volvia el error [Compile error: Expectede End Sub]
Lo que ice mal? Bueno á lo mejor todo.
"Carlos" escreveu na mensagemnews:
Hola,

En ese caso lo que te conviene es crear una macro que su contenido sea el nombre de c/u de las macros actuales y deja en privado las existentes, por ejemplo;

Supongamos que tenemos 2 macros:

Sub busca_dato()
End Sub


Sub Agrega_dato()

End Sub

Entonces crea una macro del tipo

Sub Consolidado()

busca_dato()
agrag_dato()

End Sub

y coloca al principio de cada macro citada lo siguiente

Private Sub busca_dato()
End Sub


Private Sub Agrega_dato()

End Sub

Esperando que te sirva la ayuda, se despide

Carlos

"Albino" escribió en el mensajenews:
> Olá
> Tengo una ignorancia para poner en el grupo.
> Tengo un livro con varias hojas e algunas macros.
> Las macros se usan en una determinad orden, pero acontece que por veces los
> usorarios no respectan la orden de activacion de las mismas, lo que reulta
> duplicacion de datos quando los mismos clican dos veces en la misma macro.
> Como una de ellas hace aumentar la numeracion, resulta que los nº de pedidos
> no sea correcto.
> Lo que me convenia seria que las mismas macros solo se pudessen activar uma
> vez, és decir solo seria possibile executar-la una segunda vez despues de
> executar la otra.
> Quando essa misma situacion se verificara, deveria de aparecer un aviso.
> Muchas gracias
> Albino.
>
>



hola Albino,

si te he entendido bien, una cosa que podrias hacer es, en el modulo
donde tienes las dos macros, declarar una variable boolean a nivel de
modulo, y usarla mas o menos asi:

'en el area de declaraciones del modulo:

Dim NoEjecutar as Boolean

'en la 1ª macro:

Sub TuMacro_1()
If NoEjecutar Then Exit Sub

' aqui el codigo de la macro

NoEjecutar = True
End Sub

'en la 2ª macro

Sub TuMacro_2()
' la siguiente linea es por si no quieres que se ejecute esta macro
si no se ha ejecutado la 1ª. Si no es asi eliminala
If Not NoEjecutar then Exit Sub

' aqui tu codigo

NoEjecutar = False
End Sub

espero te ayude

un saludo
Ivan

PD: si las macros estan en modulos diferentes declara la variable como
Plublic

Preguntas similares