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, dobbiamo 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 determinate situazioni, potrebbe essere necessario presentare un'opzione Sì o No di fronte all'utente per fornire la propria risposta e in base a tale 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?
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 utilizzando il tasto F5 o tramite l'opzione di esecuzione, verrà visualizzata una finestra di messaggio di fronte a me che richiede 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 seguente 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 ("Vuoi 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 seguente 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; se sì, verrà visualizzato. In caso contrario, non verrà visualizzato.