Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Inibire attivazione macro se altra/e macro non eseguita/e

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Inibire attivazione macro se altra/e macro non eseguita/e

Postdi Ricky0185 » 30/04/21 17:21

Un saluto a tutti. Magari è una stupidata però non trovo il bandolo della matassa.
Ho un foglio dove con diversi pulsanti attivo altrettante macro. Vorrei che cliccando su un qualsiasi pulsante non fosse eseguita la relativa macro se non fosse prima stata eseguita una macro associata ad altro/i pulsante/i.
Es: 4 pulsanti “1”, “2”, “3” e “4” a cui sono associate altrettante macro. Cliccando su “3” vorrei che la relativa macro associata non fosse eseguita se prima non sia stata eseguita la macro associata al pulsante “1” (o “1” e “4”).
Ringrazio per eventuali suggerimenti.
Saluti
R
Ricky0185
Utente Junior
 
Post: 67
Iscritto il: 10/12/19 20:38

Sponsor
 

Re: Inibire attivazione macro se altra/e macro non eseguita/

Postdi Anthony47 » 30/04/21 23:39

Ti dico come la farei io
Riservi 4 celle per contenere l'informazione che una certa macro e' stata eseguita, ad esempio scrivendoci 1 quando la esegui.
Poi in ogni macro controlli che quel flag sia a 1, e allora procedi, oppure sia diverso e allora esci (opzionalmente puoi spiegare cosa manca per abilitare quella macro)
Cioe' tutto si traduce in semplici If; esempio:
Codice: Seleziona tutto
Sub Macro2()

If Sheets("FoglioZZ").Range("A1") <> 1 Then     'Controllo il flag della Macro1
    MsgBox ("Compilare prima questo e quello, e validare tramite Macro1")
    Exit Sub
End If
Sheets("FoglioZZ").Range("A2") = 1              'Imposto flag di esecuzione Macro2
'
'qui
'le
'tue
'istruzioni
'
End Sub


Ovviamente devi resettare questi flag all'apertura del file, con una Sub Workbook_Open da inserire nel modulo ThisWorkbook.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17650
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Inibire attivazione macro se altra/e macro non eseguita/

Postdi Ricky0185 » 01/05/21 07:36

Avevo pensato anch'io a celle d'appoggio su altro FoglioZZ e degli "and" qualora le macro inibenti fossero più di una, soluzione peraltro presente anche sul Vs sito, ma senza ?
Usando magari il nome della macro inibente.
Grazie comunque dell'interessamento.
R
Ricky0185
Utente Junior
 
Post: 67
Iscritto il: 10/12/19 20:38

Re: Inibire attivazione macro se altra/e macro non eseguita/

Postdi Anthony47 » 01/05/21 12:35

Il dubbio di fondo e' come tenere traccia dell'esecuzione di una macro; potrebbe bastare controllare se gli effetti della macro sono presenti, ma non sapendo io che cosa fanno le macro precedenti ho ripiegato sul flag memorizzato sul foglio di lavoro. Altre tecniche potrebbero essere l'uso di variabili statiche, che quindi teoricamente "vivono" e mantengono il loro valore anche dopo l'esecuzione di una macro (perche' non sono variabili con vita limitata alla singola macro).
Ad esempio una variabile dichiarata in testa a un modulo mantiene la validita' e il contenuto per tutte le macro del modulo; una dichiarata Public vive per tutte le macro del progetto. Ma la loro memoria e' meno solida del contenuto di una cella.
Mi chiedo pure se e' proprio necessario verificare che Macro1 sia stata eseguita prima di Macro2: non basta che il codice di Macro1 sia in realta' in testa a quello di Macro2? O inserire Call Macro1 in testa al codice di Macro2? Ma questo dipende da che cosa fanno le varie macro.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17650
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Inibire attivazione macro se altra/e macro non eseguita/e":


Chi c’è in linea

Visitano il forum: Marius44 e 46 ospiti