Excel VBA MsgBox (Message Box) - Allt du behöver veta!

I Excel VBA kan du använda funktionen MsgBox för att visa en meddelanderuta (som visas nedan):

En MsgBox är inget annat än en dialogruta som du kan använda för att informera dina användare genom att visa ett anpassat meddelande eller få några grundläggande inmatningar (t.ex. Ja/Nej eller OK/Avbryt).

Medan dialogrutan MsgBox visas, stoppas din VBA -kod. Du måste klicka på någon av knapparna i MsgBox för att köra den återstående VBA -koden.

Obs! I den här självstudien kommer jag att använda ordmeddelanderutan och MsgBox utbytbart. När du arbetar med Excel VBA måste du alltid använda MsgBox.

Anatomi av en VBA MsgBox i Excel

En meddelanderuta har följande delar:

  1. Titel: Detta används vanligtvis för att visa vad meddelanderutan handlar om. Om du inte anger något, visas programnamnet - vilket är Microsoft Excel i det här fallet.
  2. Prompt: Detta är meddelandet som du vill visa. Du kan använda det här utrymmet för att skriva ett par rader eller till och med visa tabeller/data här.
  3. Knapp (ar): Även om OK är standardknappen kan du anpassa den så att den visar knappar som Ja/Nej, Ja/Nej/Avbryt, Försök igen/Ignorera etc.
  4. Stäng ikon: Du kan stänga meddelanderutan genom att klicka på stängningsikonen.

Syntax för VBA MsgBox -funktionen

Som jag nämnde är MsgBox en funktion och har en syntax som liknar andra VBA -funktioner.

MsgBox (prompt [, knappar] [, titel] [, hjälpfil, sammanhang])

  • prompt - Det här är ett obligatoriskt argument. Det visar meddelandet som du ser i MsgBox. I vårt exempel är texten "Detta är ett exempel på MsgBox" "prompten". Du kan använda upp till 1024 tecken i prompten och kan också använda den för att visa variablernas värden. Om du vill visa en prompt som har flera rader kan du också göra det (mer om detta senare i den här självstudien).
  • [knappar] - Det avgör vilka knappar och ikoner som visas i MsgBox. Till exempel, om jag använder vbOkOnly, visar den bara OK -knappen, och om jag använder vbOKCancel kommer den att visa både OK- och Avbryt -knapparna. Jag kommer att täcka olika typer av knappar senare i denna handledning.
  • [titel] - Här kan du ange vilken bildtext du vill ha i dialogrutan för meddelanden. Detta visas i titelfältet i MsgBox. Om du inte anger något kommer det att visa programmets namn.
  • [hjälpfil] - Du kan ange en hjälpfil som kan nås när en användare klickar på knappen Hjälp. Hjälpknappen visas bara när du använder knappkoden för den. Om du använder en hjälpfil måste du också ange sammanhangsargumentet.
  • [sammanhang] - Det är ett numeriskt uttryck som är Hjälp -sammanhangsnummer som tilldelats lämpligt hjälpämne.

Om du är ny på begreppet Msgbox, ignorera gärna [helpfile] och [context] -argumenten. Jag har sällan sett dessa användas.

Obs! Alla argument inom hakparenteser är valfria. Endast "prompt" -argumentet är obligatoriskt.

Excel VBA MsgBox -knappkonstanter (exempel)

I det här avsnittet kommer jag att täcka de olika typerna av knappar som du kan använda med en VBA MsgBox.

Innan jag visar dig VBA -koden för den och hur MsgBox ser ut, här är en tabell som listar alla olika knappkonstanter du kan använda.

Knapp konstant Beskrivning
vbOKOnly Visar bara OK -knappen
vbOKCancel Visar knapparna OK och Avbryt
vbAbortRetryIgnore Visar knapparna Avbryt, Försök igen och Ignorera
vbJa Nej Visar knapparna Ja och Nej
vbYesNoCancel Visar knapparna Ja, Nej och Avbryt
vbRetryCancel Visar knapparna Försök igen och Avbryt
vbMsgBoxHelpButton Visar knappen Hjälp. För att detta ska fungera måste du använda hjälp- och sammanhangsargumenten i funktionen MsgBox
vbDefaultButton1 Gör den första knappen som standard. Du kan ändra numret för att ändra standardknappen. Till exempel gör vbDefaultButton2 den andra knappen som standard

Obs! När du går igenom exemplen på att skapa olika knappar kan du undra vad det är för poäng med att ha dessa knappar om det inte har någon inverkan på koden.

Det gör det! Baserat på valet kan du koda vad du vill att koden ska göra. Om du till exempel väljer OK ska koden fortsätta och om du klickar på Avbryt ska koden stanna. Detta kan göras genom att använda variabler och tilldela värdet för meddelandefältet till en variabel. Vi kommer att täcka detta i de senare avsnitten av denna handledning.

Låt oss nu titta på några exempel på hur de olika knapparna kan visas i en MsgBox och hur det ser ut.

MsgBox -knappar - vbOKOnly (standard)

Om du bara använder prompten och inte anger några av argumenten får du standardmeddelanderutan enligt nedan:

Nedan är koden som kommer att ge denna meddelanderuta:

Sub DefaultMsgBox () MsgBox "Detta är en exempelruta" Avsluta Sub

Observera att textsträngen måste vara i dubbla citattecken.

Du kan också använda knappen konstant vbOKOnly, men även om du inte anger något, tas det som standard.

MsgBox -knappar - OK & Avbryt

Om du bara vill visa OK och knappen Avbryt måste du använda konstanten vbOKCancel.

Sub MsgBoxOKCancel () MsgBox "Vill du fortsätta?", VbOKCancel End Sub

MsgBox -knappar - Avbryt, försök igen och ignorera

Du kan använda konstanten ‘vbAbortRetryIgnore’ för att visa knapparna Avbryt, Försök igen och Ignorera.

Sub MsgBoxAbortRetryIgnore () MsgBox "Vad vill du göra?", VbAbortRetryIgnore End Sub

MsgBox -knappar - Ja och Nej

Du kan använda konstanten ‘vbYesNo’ för att visa Ja och Nej -knapparna.

Sub MsgBoxYesNo () MsgBox "Ska vi sluta?", VbYesNo End Sub

MsgBox -knappar - Ja, Nej och Avbryt

Du kan använda konstanten ‘vbYesNoCancel’ för att visa knapparna Ja, Nej och Avbryt.

Sub MsgBoxYesNoCancel () MsgBox "Ska vi sluta?", VbYesNoCancel End Sub

MsgBox -knappar - Försök igen och avbryt

Du kan använda konstanten ‘vbRetryCancel’ för att visa knapparna Försök igen och Avbryt.

Sub MsgBoxRetryCancel () MsgBox "Vad vill du göra härnäst?", VbRetryCancel End Sub

MsgBox -knappar - Hjälpknapp

Du kan använda konstanten ‘vbMsgBoxHelpButton’ för att visa hjälpknappen. Du kan använda den med andra knappkonstanter.

Sub MsgBoxRetryHelp () MsgBox "Vad vill du göra härnäst?", VbRetryCancel + vbMsgBoxHelpButton End Sub

Observera att i den här koden har vi kombinerat två olika knappkonstanter (vbRetryCancel + vbMsgBoxHelpButton). Den första delen visar knappen Försök igen och Avbryt och den andra delen visar knappen Hjälp.

MsgBox -knappar - Ställa in en standardknapp

Du kan använda konstanten ‘vbDefaultButton1’ för att ställa in den första knappen som standard. Det betyder att knappen redan är markerad och om du trycker på enter kör den knappen.

Nedan är koden som kommer att ställa in den andra knappen ("Nej" -knappen) som standard.

Sub MsgBoxOKCancel () MsgBox "Vad vill du göra härnäst?", VbYesNoCancel + vbDefaultButton2 End Sub

I de flesta fall är knappen längst till vänster standardknappen. Du kan välja andra knappar med vbDefaultButton2, vbDefaultButton3 och vbDefaultButton4.

Excel VBA MsgBox Icon Constants (Exempel)

Förutom knapparna kan du också anpassa ikonerna som visas i dialogrutan MsgBox. Till exempel kan du ha en röd kritisk ikon eller en blå informationsikon.

Nedan finns en tabell som visar koden som visar motsvarande ikon.

Ikon konstant Beskrivning
vbKritisk Visar ikonen för det kritiska meddelandet
vbFråga Visar frågeikonen
vbUtrop Visar varningsmeddelandeikonen
vbInformation Visar informationsikonen

MsgBox Icons - Critical

Om du vill visa en kritisk ikon i din MsgBox, använd vbCritical -konstanten. Du kan använda detta tillsammans med andra knappkonstanter (genom att sätta ett + -tecken mellan koderna).

Till exempel nedan är en kod som visar standard OK -knappen med en kritisk ikon.

Sub MsgBoxCriticalIcon () MsgBox "This is a sample box", vbCritical End Sub

Om du vill visa den kritiska ikonen med Ja och Nej -knappar, använd följande kod:

Sub MsgBoxCriticalIcon () MsgBox "This is a sample box", vbYesNo + vbCritical End Sub

MsgBox -ikoner - fråga

Om du vill visa en kritisk ikon i din MsgBox använder du konstanten vbQuestion.

Sub MsgBoxQuestionIcon () MsgBox "This is a sample box", vbYesNo + vbQuestion End Sub

MsgBox -ikoner - utrop

Om du vill visa en utropsikon i din MsgBox använder du konstanten vbExclamation.

Sub MsgBoxExclamationIcon () MsgBox "This is a sample box", vbYesNo + vbExclamation End Sub

MsgBox -ikoner - Information

Om du vill visa en informationsikon i din MsgBox använder du konstanten vbInformation.

Sub MsgBoxInformationIcon () MsgBox "This is a sample box", vbYesNo + vbInformation End Sub

Anpassa titel och fråga i MsgBox

När du använder MsgBox kan du anpassa titeln och snabbmeddelandena.

Hittills har exemplet vi sett använt Microsoft Excel som titel. Om du inte anger titelargumentet använder MsgBox automatiskt programmets titel (som har varit Microsoft Excel i det här fallet).

Du kan anpassa titeln genom att ange den i koden enligt nedan:

Sub MsgBoxInformationIcon () MsgBox "Vill du fortsätta?", VbYesNo + vbQuestion, "Steg 1 av 3" Avsluta sub

På samma sätt kan du också anpassa snabbmeddelandet.

Du kan också lägga till radbrytningar i snabbmeddelandet.

I koden nedan har jag lagt till en radbrytning med "vbNewLine".

Sub MsgBoxInformationIcon () MsgBox "Vill du fortsätta?" & vbNewLine & "Klicka på Yes för att fortsätta", vbYesNo + vbQuestion, "Step 1 of 3" End Sub

Du kan också använda vagnretur - Chr (13) - eller radmatning - Chr (10) för att infoga en ny rad i snabbmeddelandet.

Observera att du bara kan lägga till en ny rad i snabbmeddelandet och inte titeln.

Tilldela MsgBox -värde till en variabel

Hittills har vi sett exemplen där vi har skapat meddelanderutor och anpassat knapparna, ikonerna, titeln och prompten.

Att klicka på en knapp har dock inte gjort något.

Med MsgBox -funktionen i Excel kan du bestämma vad du vill göra när en användare klickar på en viss knapp. Och detta är möjligt eftersom varje knapp har ett värde kopplat till det.

Så om jag klickar på Ja -knappen returnerar funktionen MsgBox ett värde (6 eller konstant vbYes) som jag kan använda i min kod. På samma sätt väljer användaren Nej -knappen, den returnerar ett annat värde ((7 eller konstant vbNo)) som jag kan använda i koden.

Nedan visas en tabell som visar de exakta värdena och konstanten som returneras av funktionen MsgBox. Du behöver inte memorera dessa, bara vara medveten om det och du kan använda de konstanter som är lättare att använda.

Klicka på knappen Konstant Värde
Ok vbOk 1
Annullera vbCancel 2
Avbryta vbAbort 3
Försök igen vbRetry 4
Strunta i vbIgnore 5
Ja vbJa 6
Nej vbNej 7

Låt oss nu se hur vi kan styra VBA -makrokoden baserat på vilken knapp en användare klickar på.

I koden nedan, om användaren klickar på Ja, visas meddelandet "Du klickade på Ja", och om användaren klickar på Nej visas "Du klickade på Nej".

Sub MsgBoxInformationIcon () Resultat = MsgBox ("Vill du fortsätta?", VbYesNo + vbQuestion) Om Resultat = vbYes Då klickade MsgBox "Ja" Annars: MsgBox "Du klickade Nej" Sluta om Avsluta Sub Sub

I koden ovan har jag tilldelat värdet för MsgBox -funktionen till resultatvariabeln. När du klickar på Ja -knappen får resultatvariabeln vbYes -konstanten (eller siffran 6) och när du klickar på Nej får resultavariabeln vbNo -konstanten (eller siffran 7).

Sedan använde jag en If Then Else -konstruktion för att kontrollera om resultatvariabeln innehåller värdet vbYes. Om det gör det, visas meddelandet "Du klickade på Ja", annars visar det "Du klickade på Nej".

Du kan använda samma koncept för att köra en kod om en användare klickar på Ja och lämnar suben när han/hon klickar på Nej.

Obs! När du tilldelar MsgBox -utmatningen till en variabel måste du lägga argumenten för MsgBox -funktionen inom parentes. Till exempel i raden Resultat = MsgBox ("Vill du fortsätta?", VbYesNo + vbQuestion), kan du se att argumenten ligger inom parentes.

Om du vill gräva vidare i meddelandeboxfunktionen, här är det officiella dokumentet om den.

Du kanske också gillar följande Excel VBA -självstudier:

  • Excel VBA delad funktion.
  • Excel VBA InStr -funktion.
  • Arbeta med celler och intervall i Excel VBA.
  • Arbetar med kalkylblad i VBA.
  • Arbetar med arbetsböcker i VBA.
  • Använda loopar i Excel VBA.
  • Förstå Excel VBA -datatyper (variabler och konstanter)
  • Hur man skapar och använder personlig makro arbetsbok i Excel.
  • Användbara Excel -makrokodsexempel.
  • Använda For Next Loop i Excel VBA.
  • Excel VBA -evenemang - En enkel (och komplett) guide.
  • Hur man kör ett makro i Excel-En komplett steg-för-steg-guide.
  • Hur man skapar och använder ett Excel-tillägg.

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave