Denna handledning kommer att täcka hur du använder VBA MsgBox -funktionen för att visa meddelanderutor till användare (inklusive YesNo Messagebox). Du kanske också är intresserad av vår artikel om InputBoxes.
VBA MsgBox -funktion
I VBA är det enkelt att visa en enkel MsgBox:
1 | MsgBox "Detta är en meddelanderuta" |
Men du kan göra mycket mer än att visa en enkel OK -meddelanderuta. Låt oss snabbt titta på komplicerade exempel innan vi går in på detaljer …
VBA Ja Ingen meddelanderuta
Nedan skapar vi en meddelanderuta med:
- En rubrik "Meddelandefältets titel" och prompten "Text"
- En frågeteckenikon
- Ja / Nej alternativ istället för ett enkelt "OK"
- Standardknapp = 'Nej'
123 | Dim svar Som heltalanswer = MsgBox ("Text", vbQuestion + vbYesNo + vbDefaultButton2, "Message Box Title") |
Meddelandefältet returnerar vbYes eller vbNo beroende på användarens val. Du kan sedan utföra olika åtgärder baserat på valet:
12345 | Om svar = vbJa DåMsgBox "Ja"AnnanMsgBox "Nej"Avsluta om |
I nästa avsnitt visar vi dig alla tillgängliga alternativ när du skapar meddelandefält. Sedan kommer vi att introducera dig till syntaxen för MsgBox -funktionen och slutligen gå igenom andra meddelandefält.
Alternativ för VBA -meddelanderuta
Ta en titt på bilden nedan. Här ser du (nästan) alla tillgängliga alternativ när du skapar meddelanderutor. Lägg märke till ikonerna och de olika knapparna.
Detta är en skärmdump av "MessageBox Builder" från vårt Premium VBA-tillägg: AutoMacro. Med MessageBox Builder kan du snabbt designa önskad meddelandefält och infoga koden i din kodmodul. Den innehåller också många andra kodbyggare, ett omfattande VBA -kodbibliotek och ett sortiment av kodningsverktyg. Det är ett måste för alla VBA-utvecklare.
Syntax för MsgBox -funktionen
MsgBox (prompt [, knappar] [, titel] [, hjälpfil, sammanhang])
prompt (krävs) - Detta är den primära meddelandefältstexten.
knappar - Välj vilka knappar som ska visas. Om det utelämnas, "OK bara". Här kan du också ange vilken ikon som ska visas och standardknappen.
titel - Titeln högst upp i meddelanderutan. Om den utelämnas visas namnet på den aktuella applikationen (t.ex. Microsoft Excel).
hjälpfil - Ange hjälpfil som kan nås när användaren klickar på knappen "Hjälp". Om det anges måste du också lägga till sammanhang (nedan)
sammanhang - Numeriskt uttryck som representerar Hjälp -kontextnumret som tilldelats lämpligt hjälpämne.
Du kan förmodligen ignorera hjälpfilen och sammanhangsargumenten. Jag har aldrig sett dem använda.
Anpassa meddelanderutans titel och fråga
Med MsgBox -funktionen kan du anpassa titeln och snabbmeddelanden så här:
1 | Msgbox "Prompt" ,, "Title" |
Ett annat exempel:
123 | Sub MsgBoxPromptTitle ()MsgBox "Steg 1 slutförd. Klicka på OK för att köra steg 2." ,, "Steg 1 av 5"Avsluta Sub |
Viktig! Du måste komma ihåg att omge din text med citat.
MessageBox LineBreaks
Du kan också lägga till radbrytningar i meddelandefältet med "vbNewLine".
123 | Sub MsgBoxPromptTitle_NewLine ()MsgBox "Steg 1 slutförd." & vbNewLine & "Klicka OK för att köra steg 2.",, "Steg 1 av 5"Avsluta Sub |
Lägg märke till att vi använder symbolen & för att sammanfoga text. Du kan lära dig mer om hur du använder & med text och andra alternativ för att infoga radbrytningar i vår artikel om att gå med text.
MsgBox -ikoner
VBA ger dig möjlighet att lägga till en av fyra förbyggda ikoner i dina meddelandefält:
Ikon konstant | Ikon |
---|---|
vbInformation | ![]() |
vbKritisk | ![]() |
vbFråga | ![]() |
vbUtrop | ![]() |
Ikonkonstanten ska placeras inom knappargumentet:
123 | Sub MsgBoxQuestionIcon ()MsgBox "Frågeexempel", vbQuestionAvsluta Sub |
Detta genererar standardmeddelanderutan "OK" med ikonen Fråga:
Lägg märke till hur VBA Editor visar dig de alternativ du har när du skriver:
Detta är användbart eftersom du inte behöver komma ihåg den exakta syntaxen eller namnen på ikoner eller knappar.
Nu kommer vi att demonstrera varje meddelandefältikon:
MsgBox -ikoner - Information
123 | Sub MsgBoxInformationIcon ()MsgBox "Informationsexempel", vbInformationAvsluta Sub |
MsgBox Icons - Critical
123 | Sub MsgBoxCriticalIcon ()MsgBox "Kritiskt exempel", vbCriticalAvsluta Sub |
MsgBox -ikoner - fråga
123 | Sub MsgBoxQuestionIcon ()MsgBox "Frågeexempel", vbQuestionAvsluta Sub |
MsgBox -ikoner - utrop
123 | Sub MsgBoxExclamationIcon ()MsgBox "Exclamation Exempel", vbExclamationAvsluta Sub |
Nedan kommer vi att prata om att generera meddelanderutor med olika knapplayouter. Om du väljer en annan typ av meddelandefält måste du lägga till ikontypen efter knapparna med ett "+":
123 | Sub MsgBoxQuestionIcon ()MsgBox "Vill du fortsätta?", VbOKCancel + vbQuestionAvsluta Sub |
MsgBox -variabler
Hittills har vi arbetat främst med standard "OK" -meddelande rutan. Meddelanderutan OK har bara ett alternativ: Genom att trycka på ‘OK’ kan koden fortsätta. Du kan dock också ange andra knappgrupper: OK / Avbryt, Ja / Nej, etc.
I så fall vill du utföra olika åtgärder baserat på vilken knapp som trycks. Låt oss titta på ett exempel.
Här är meddelanderutan som vi kommer att generera:
Detta är hela koden (vi kommer att bryta ner den nästa):
123456789101112 | Sub MsgBoxVariable ()Dim svar Som heltalanswer = MsgBox ("Vill du fortsätta?", vbQuestion + vbYesNo)Om svar = vbJa DåMsgBox "Ja"AnnanMsgBox "Nej"Avsluta omAvsluta Sub |
Först tilldelar vi meddelandeboxutmatningen till en heltalsvariabel.
123 | Dim svar Som heltalanswer = MsgBox ("Vill du fortsätta?", vbQuestion + vbYesNo) |
Därefter använder vi en If-Else för att bestämma vad vi ska göra baserat på vilken knapp som trycks:
12345 | Om svar = vbJa DåMsgBox "Ja"AnnanMsgBox "Nej"Avsluta om |
Funktionen MsgBox returnerar ett heltal (mellan 1-7) så vi definierar variabeln som en heltalstyp. Men istället för att hänvisa till heltalet kan du hänvisa till en konstant (t.ex. vbOK, vbCancel, etc.). Titta på den här tabellen för att se alla alternativ:
Knapp | Konstant | Värde |
---|---|---|
OK | vbOK | 1 |
Avbryt | vbCancel | 2 |
Avbryta | vbAbort | 3 |
Försök igen | vbRetry | 4 |
Ignorera | vbIgnore | 5 |
Ja | vbJa | 6 |
Nej | vbNej | 7 |
Nu kommer vi att demonstrera varje knappgruppering:
OK Message Box - vbOKOnly
Detta är standard VBA -meddelanderuta.
123456 | Sub MsgBox_OKOnly ()Dim svar Som heltalanswer = MsgBox ("OKOnly Exempel", vbOKOnly)Avsluta Sub |
OK Avbryt meddelandefält - vbOKCancel
123456789101112 | Sub MsgBox_OKCancel ()Dim svar Som heltalanswer = MsgBox ("OK Avbryt exempel", vbOKCancel)Om svar = vbOK DåMsgBox "OK"AnnanMsgBox "Avbryt"Avsluta omAvsluta Sub |
Yes No Message Box - vbJa Nej
123456789101112 | Sub MsgBox_YesNo ()Dim svar Som heltalsvar = MsgBox ("Ja nej exempel", vbYesNo)Om svar = vbJa DåMsgBox "Ja"AnnanMsgBox "Nej"Avsluta omAvsluta Sub |
Ja Nej Avbryt meddelanderuta - vbYesNoCancel
1234567891011121314 | Sub MsgBox_YesNoCancel ()Dim svar Som heltalanswer = MsgBox ("Ja Nej Avbryt exempel", vbYesNoCancel)Om svar = vbJa DåMsgBox "Ja"ElseIf svar = vbNo DåMsgBox "Nej"AnnanMsgBox "Avbryt"Avsluta omAvsluta Sub |
Avbryt försök Ignorera meddelanderuta - vbAbortRetryIgnore
1234567891011121314 | Sub MsgBox_AbortRetryIgnore ()Dim svar Som heltalanswer = MsgBox ("Avbryt försök Ignorera exempel", vbAbortRetryIgnore)Om svar = vbAbort DåMsgBox "Avbryt"ElseIf answer = vbRetry DåMsgBox "Försök igen"AnnanMsgBox "Ignorera"Avsluta omAvsluta Sub |
Försök igen Avbryt meddelanderuta - vbRetryCancel
123456789101112 | Sub MsgBox_RetryCancel ()Dim svar Som heltalanswer = MsgBox ("Försök igen avbryt exempel", vbRetryCancel)Om svar = vbRetry DåMsgBox "Försök igen"AnnanMsgBox "Avbryt"Avsluta omAvsluta Sub |
VBA MessageBox Exempel
Meddelanderuta Bekräftelse innan du kör makro
Denna kod kommer att visa en Ja Nej Meddelande rutan innan du ringer ett makro. Om du klickar på Ja kallas makrot, om du klickar på Nej körs inte makrot.
12345678 | Sub Msgbox_BeforeRunning ()Dim svar Som heltalanswer = MsgBox ("Vill du köra Macro1?", vbQuestion + vbYesNo)Om svar = vbJa Ring sedan till Makro1Avsluta Sub |
Ja / Nej Meddelanderuta - Avsluta Sub
Här kommer vi att bekräfta med användaren om vi ska fortsätta köra ett makro. Om du klickar på Nej kommer koden att lämna suben, annars fortsätter proceduren.
12345678910 | Sub Msgbox_BeforeRunning ()Dim svar Som heltalanswer = MsgBox ("Vill du fortsätta?", vbQuestion + vbYesNo)Om svar = vbNo Avsluta sedan Sub'Någon kodAvsluta Sub |
VBA -meddelanderuta i Access VBA
Alla ovanstående exempel fungerar exakt likadant i Access VBA som i Excel VBA.