Interrompere una macro e riprendere il controllo

Quando si sviluppa una macro per l’utilizzo da parte di altri, è possibile aggiungere un metodo per consentire all’utente di uscire dalla macro prima che termini e mantenere il controllo di ciò che fa la macro. CTRL + INTERR interromperà una macro, ma non verrà chiusa correttamente, poiché consentirà all’utente di visualizzare il codice nell’editor VBA.

Esistono diversi modi per affrontare questo problema. Il primo è creare un prompt “vuoi uscire” nella macro, quindi fare in modo che la macro visualizzi periodicamente il prompt. Ad esempio, considera il codice seguente:

Do ...
	'il tuo codice qui
	Counter = Counter + 1
	If Counter Mod 25 = 0 Then
		If MsgBox("Vuoi uscire?", vbYesNo) = vbYes Then End
	End If
Loop

 

La costruzione della macro si basa sulla premessa che si hanno una serie di passaggi che si desidera ripetere più e più volte, attraverso l’uso di una struttura Do … Loop. Ogni volta che si esegue il ciclo, il valore di Counter viene incrementato. Ogni 25 volte nel ciclo, il messaggio “Vuoi uscire?” viene visualizzato e l’utente ha la possibilità di uscire.

Questo approccio è facile da implementare e può funzionare abbastanza bene per alcuni scopi. Il più grande svantaggio di questo approccio, tuttavia, è che non consente l’immediatezza: l’utente deve attendere per uscire dalla macro finché non si sono verificate almeno 25 iterazioni.

Un altro approccio consiste nel “nascondere” il codice VBA e applicarvi una password. Puoi farlo seguendo questi passaggi dall’editor VBA:

  • Scegli l’opzione Proprietà di VBAProject dal menu Strumenti. L’editor visualizza la finestra di dialogo Proprietà progetto.
  • Assicurati che la scheda Protezione sia visualizzata.

Questo contenuto è riservato agli abbonati

Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.

Se sei già abbonato Accedi per sbloccare il contenuto!

In caso contrario abbonati qui! L'abbonamento è conveniente.

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

Ti è stato utile?