Yes No Message Box (Msgbox) - Exempel på VBA -kod

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.

wave wave wave wave wave