aggiungere opzione annulla in una msgbox

Anonimo
2013-07-30T19:54:16+00:00

Salve alla chiusura di un foglio di Excel si esegue questa routine e si avvia una msgbox:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

  Dim Scelta As String

  Scelta = MsgBox("SICURO di aver Spiegato SEMPRE le differenze quando ti sono state chieste? SICURO di aver ricontrollato le cifre che hai indicate?", vbInformation + vbYesNo, "Scelta")

  If Scelta = vbYes Then

    MsgBox "Bene! Arrivederi alla prossima! Ciao", vbInformation, "Titolo"

  Else

    MsgBox "Per Favore ricontrolla.", vbExclamation, "Titolo"

  End If

End Sub

Quello che accade è che anche se l'utente risponde No alla domanda "SICURO di aver Spiegato SEMPRE le differenze quando ti sono state chieste etc"

Appare "Per Favore ricontrolla" ma dopo l'ok il file si chiude lo stesso.

Ora vorrei che dopo "per favore ricontrolla" o ci fosse l'opzione annulla che cliccata fa rimanere il file aperto, o comunque dopo l'iter negativo il file restasse aperto per un ricontrollo.

In altre parole il file si deve chiudere solo con attuando il perscorso del SI.

spero di essere stato chiaro.

Grazie dell'aiuto

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2013-07-31T19:54:20+00:00

Funziona. Il file si può chiudere solo rispondendo a SI

Infatti quando l'utente risponde Si riceve un messaggio e cliccando su Ok sceglie le opzioni di salvataggio.

E se volessi anche inserire un messaggio alla risposta No?

Come accade col suggerimento di AndyCap?

           

Aggiungi la stessa riga di Andrea sotto a Cancel = True nell'Else.

La risposta è stata utile?

0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-08-01T20:12:05+00:00

    Perfetto.

    Grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-07-31T18:36:57+00:00

    Salve alla chiusura di un foglio di Excel si esegue questa routine e si avvia una msgbox:

     

    <cut>

    In altre parole il file si deve chiudere solo con attuando il perscorso del SI.

    spero di essere stato chiaro.

    Grazie dell'aiuto

    Io direi che più che vbInformation sia vbQuestion, no? Inoltre, quello che viene restituito *non* sarebbe una stringa. Dalla guida:

     

    Visualizza un messaggio in una finestra di dialogo e attende che l'utente scelga un pulsante, quindi restituisce un valoreInteger che indica quale pulsante l'utente ha scelto.

     

     

        Dim lRisposta As Integer

       

        lRisposta = MsgBox("SICURO di aver Spiegato SEMPRE le differenze quando ti sono state chieste?" _

            & vbNewLine & "SICURO di aver ricontrollato le cifre che hai indicate?", vbYesNo + vbQuestion, "Scelta")

           

        If lRisposta = vbYes Then

            'quello che vuoi se l'utente preme Sì

        Else

            Cancel = True

        End If

     

       

     

    Funziona. Il file si può chiudere solo rispondendo a SI

    Infatti quando l'utente risponde Si riceve un messaggio e cliccando su Ok sceglie le opzioni di salvataggio.

    E se volessi anche inserire un messaggio alla risposta No?

    Come accade col suggerimento di AndyCap?

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-07-31T06:36:57+00:00

    Salve alla chiusura di un foglio di Excel si esegue questa routine e si avvia una msgbox:

     

    <cut>

    In altre parole il file si deve chiudere solo con attuando il perscorso del SI.

    spero di essere stato chiaro.

    Grazie dell'aiuto

    Io direi che più che vbInformation sia vbQuestion, no? Inoltre, quello che viene restituito *non* sarebbe una stringa. Dalla guida:

    Visualizza un messaggio in una finestra di dialogo e attende che l'utente scelga un pulsante, quindi restituisce un valoreInteger che indica quale pulsante l'utente ha scelto.

        Dim lRisposta As Integer

        lRisposta = MsgBox("SICURO di aver Spiegato SEMPRE le differenze quando ti sono state chieste?" _

            & vbNewLine & "SICURO di aver ricontrollato le cifre che hai indicate?", vbYesNo + vbQuestion, "Scelta")

        If lRisposta = vbYes Then

            'quello che vuoi se l'utente preme Sì

        Else

            Cancel = True

        End If

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-07-31T06:18:34+00:00

    Salve alla chiusura di un foglio di Excel si esegue questa routine e si avvia una msgbox:

     

    Private Sub Workbook_BeforeClose(Cancel As Boolean)

      Dim Scelta As String

      Scelta = MsgBox("SICURO di aver Spiegato SEMPRE le differenze quando ti sono state chieste? SICURO di aver ricontrollato le cifre che hai indicate?", vbInformation + vbYesNo, "Scelta")

      If Scelta = vbYes Then

        MsgBox "Bene! Arrivederi alla prossima! Ciao", vbInformation, "Titolo"

      Else

        MsgBox "Per Favore ricontrolla.", vbExclamation, "Titolo"

      End If

    End Sub

     

    Quello che accade è che anche se l'utente risponde No alla domanda "SICURO di aver Spiegato SEMPRE le differenze quando ti sono state chieste etc"

    Appare "Per Favore ricontrolla" ma dopo l'ok il file si chiude lo stesso.

    Ora vorrei che dopo "per favore ricontrolla" o ci fosse l'opzione annulla che cliccata fa rimanere il file aperto, o comunque dopo l'iter negativo il file restasse aperto per un ricontrollo.

    In altre parole il file si deve chiudere solo con attuando il perscorso del SI.

    spero di essere stato chiaro.

    Grazie dell'aiuto

    Ciao,

    devi annullare l'operazione di chiusura, così:

    If Scelta = vbYes Then

        MsgBox "Bene! Arrivederi alla prossima! Ciao", vbInformation, "Titolo"

      Else

        Cancel = True

        MsgBox "Per Favore ricontrolla.", vbExclamation, "Titolo"

    End If

    Ciao,

    Andrea.

    La risposta è stata utile?

    0 commenti Nessun commento