VBA MsgBox (Sì / No)

Excel VBA MsgBox (Sì / No)

In VBA , utilizzando la finestra di messaggio possiamo creare una casella di messaggio sì no che viene utilizzata per registrare l'input dell'utente in base al clic su sì o no, la sintassi per creare una finestra di messaggio sì no è la seguente variabile = MsgBox ("Testo", vbQuestion + vbYesNo + vbDefaultButton2, "Message Box Title") dove la variabile deve essere dichiarata come numero intero.

Spesso nella codifica VBA, è necessario raccogliere i valori di input dagli utenti per eseguire alcune attività e una di queste attività per raccogliere la risposta Sì o No dagli utenti. Utilizzando il metodo VBA MsgBox Sì No possiamo scrivere il codice per procedere ulteriormente nel codice.

In alcune situazioni potremmo aver bisogno di presentare l'opzione Sì o No di fronte all'utente per dare la sua risposta e in base a quella risposta possiamo effettivamente eseguire il codice VBA.

Ad esempio, guarda l'immagine sotto del MsgBox in VBA.

Se l'utente dice Sì "possiamo scrivere codice per eseguire un'attività specifica" e se l'utente dice "No" possiamo scrivere codice per eseguire un altro insieme di attività.

Come lavorare con MsgBox Sì / Nessuna risposta?

Puoi scaricare questa finestra di messaggio VBA Sì o No modello Excel qui - Finestra di messaggio VBA Sì o No modello Excel

Esempio n. 1: copia e incolla in base alla risposta

Ad esempio, guarda il codice seguente.

Codice:

 Sub MessageBox_Yes_NO_Example1 () Dim AnswerYes As String Dim AnswerNo As String AnswerYes = MsgBox ("Do you Wish to Copy?", VbQuestion + vbYesNo, "User Repsonse") If AnswerYes = vbYes Then Range ("A1: A2"). Copy Range ("C1") Else Range ("A1: A2"). Copia intervallo ("E1") End If End Sub 

Spiegazione:

Quanto sopra ha dichiarato la variabile come String ie

 Risposta fioca: Sì come stringa 

Nella riga successiva, abbiamo assegnato il valore tramite una finestra di messaggio che chiede "Copiare?".

AnswerYes = MsgBox ("Do You Wish to Copy?", VbQuestion + vbYesNo, "User Repsonse")

Ora l'istruzione IF valuta la risposta fornita tramite la finestra di messaggio. Se il risultato della finestra di messaggio è vbYes , copierà l'intervallo da A1 a A2 e incollerà nella cella C1.

   If AnswerYes = vbYes Then Range ("A1: A2"). Copy Range ("C1")

Se la risposta data dalla finestra di messaggio è No, copierà l'intervallo da A1 a A2 e incollerà nella cella E1.

 Altro intervallo ("A1: A2"). Copia intervallo ("E1") End If 

Ok, ora ho inserito pochi valori nelle celle A1 e A2.

Ora eseguirò il codice usando il tasto F5 o tramite l'opzione di esecuzione, apparirà una finestra di messaggio di fronte a me e chiederò la mia risposta.

Se faccio clic su Sì, copierà l'intervallo da A1 a A2 e incollerà nella cella C1. Ora farò clic su Sì e vedrò il risultato.

Quindi ha eseguito l'attività assegnata se la risposta è SI.

Ora di nuovo eseguirò il codice.

Questa volta selezionerò No e vedrò cosa succede.

Sì, ha eseguito il compito assegnato nel codice, ad es

 Altro intervallo ("A1: A2"). Copia intervallo ("E1")

Esempio n. 2 - Nascondi e mostra fogli in base alla risposta

Il codice sottostante nasconderà tutti i fogli tranne il foglio attivo se la risposta è sì.

Codice:

 Sub HideAll () Dim Answer As String Dim Ws As Worksheet Answer = MsgBox ("Desideri nascondere tutto?", VbQuestion + vbYesNo, "Hide") If Answer = vbYes Then For Each Ws In ActiveWorkbook.Worksheets If Ws.Name ActiveSheet.Name Then Ws.Visible = xlSheetVeryHidden Next Ws ElseIf Answer = vbNo Then MsgBox "Hai scelto di non nascondere i fogli", vbInformation, "No Hide" End If End Sub 

Il codice sopra nasconderà tutti i fogli di lavoro tranne il foglio in cui ci troviamo in questo momento se la risposta dalla finestra di messaggio è SÌ.

Se la risposta dalla finestra di messaggio è NO, verrà visualizzata la finestra di messaggio che dice "Hai scelto di non nascondere i fogli".

Allo stesso modo, il codice sottostante mostrerà il foglio se la risposta è Sì.

Codice:

 Sub UnHideAll () Dim Answer As String Dim Ws As Worksheet Answer = MsgBox ("Do you Wish to Unhide All?", VbQuestion + vbYesNo, "Hide") If Answer = vbYes Then For Each Ws In ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Next Ws ElseIf Answer = vbNo Then MsgBox "Hai scelto di non mostrare i fogli", vbInformation, "No Hide" End If End Sub 

Funziona esattamente come il codice del foglio nascosto, in caso affermativo verrà visualizzato, in caso contrario non verrà visualizzato.