Blocco tasto invio su MsgBox



  • 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? ^_^