Blocco tasto invio su MsgBox
Hai un problema con Excel? 
Blocco tasto invio su MsgBox
di beppexile data: 15/07/2016 15:33:18
Salve a tutti, ho il seguente problema, in una sequenza di immissioni di dati, appaiono saltuariamente delle MsgBox con delle informazioni importanti che l'utente dovrebbe vedere;
capita spesso che, visto che l'immissione dati nella form è tabulata, premendo invio sulla tastiera si passa da una textbox all'altra.
Ma, se nel passaggio appare una MsgBox informativa, come faccio a impedire all'utente di premere il tasto invio, che andrebbe irrimediabilmente a chiudere la MsgBox?
Non allego file in quanto basta crearne uno vuoto e copiare il codice sotto in un modulo per provare a fare dei test.
Di seguito il codice generico che uso per richiamare la MsgBox:
Option Explicit
Sub prova()
Dim msg As String
msg = MsgBox("Prova", vbOKCancel)
End Sub
|
di Vecchio Frac data: 15/07/2016 15:50:34
La Msgbox di sistema è (come inputbox) indiscutibilmente utile ma perniciosa, perchè l'utente può fare Ctrl-C o Ctrl-Break e interrompere addirittura la macro.
Creati dunque una userform tua che simuli la msgbox e che sia blindata a dovere (modale, a chiusura obbligatoria, con focus su un controllo nascosto privo di codice e non su ok o annulla, ecc.).
La tua msgbox personalizzata la puoi richiamare millemila volte nel codice al posto della msgbox standard e sarà molto più funzionale e sicura.
di beppexile data: 15/07/2016 15:58:33
Ok, grazie mille.
La MsgBox è più veloce da richiamare, ecco perché la uso; ma non avevo idea che si potesse usare Ctrl-C o Ctrl-Break per fermare la macro: mi hai appena fatto venire gli incubi.
Corro a modificare il mio file!
Se qualcuno blocca il file durante l'esecuzione di una della macro, sconvolgerebbe l'intero database!
Segno come risolta.
di Vecchio Frac data: 15/07/2016 16:02:28
Bè esiste sempre Application.EnableCancelKey ma chi se ne ricorda? chi lo usa mai? ^_^
Vuoi Approfondire?