Du är förmodligen bekant med VBA MsgBox-funktionen. MsgBox-funktionen, som accepterar argumenten som visas nedan, är praktisk för att visa information och få enkel användarinput. Det kan få användarinput eftersom det är en funktion. En funktion, som du säkert vet, returnerar ett värde. När det gäller MsgBox-funktionen använder den en dialogruta för att få värdet som den returnerar. Fortsätt läsa för att se exakt hur det fungerar.
Argument |
Vad det påverkar |
Prompt |
Texten Excel visas i meddelanderutan |
Knappar |
Ett nummer som anger vilka knappar (tillsammans med vilken ikon) som
visas i meddelanderutan (valfritt) |
Titel |
Texten som visas i meddelanderutans namnlist
(valfritt) |
Här är en förenklad version av syntaxen för MsgBox-funktionen:
MsgBox(prompt[, knappar][, titel])
Visar en enkel meddelanderuta
Du kan använda MsgBox-funktionen på två sätt:
-
För att helt enkelt visa ett meddelande till användaren: I det här fallet bryr du dig inte om resultatet som returneras av funktionen.
-
För att få ett svar från användaren: I det här fallet bryr du dig om resultatet som returneras av funktionen. Resultatet beror på knappen som användaren klickar på.
Om du använder MsgBox-funktionen ensam, inkludera inte parenteser runt argumenten. Följande exempel visar helt enkelt ett meddelande och returnerar inget resultat. När meddelandet visas stoppas koden tills användaren klickar på OK.
Sub MsgBoxDemo()
MsgBox "Klicka på OK för att börja skriva ut."
Sheets ("Resultat"). Skriv ut
Avsluta Sub
Titta nedan för att se hur den här meddelanderutan ser ut. I det här fallet börjar utskriften när användaren klickar på OK. Märker du att det inte finns något sätt att avbryta utskriften? Fortsätt läsa för att ta reda på hur du fixar det.
En enkel meddelandelåda.
Får svar från en meddelanderuta
Om du visar en meddelanderuta som har mer än bara en OK-knapp, vill du förmodligen veta vilken knapp användaren klickar på. Du har tur. MsgBox-funktionen kan returnera ett värde som representerar vilken knapp som klickas på. Du kan tilldela resultatet av MsgBox-funktionen till en variabel.
I följande kod används några inbyggda konstanter som gör det enkelt att arbeta med värdena som returneras av MsgBox:
Sub GetAnswer()
Dim Ans As Long
Ans = MsgBox(“Börja skriva ut?”, vbYesNo)
Välj Case Ans
Fall vbJa
ActiveSheet.PrintOut
Fall vbNr
MsgBox "Utskrift avbruten"
Avsluta Välj
Avsluta Sub
Konstant |
Värde |
Vad den gör |
Endast vbOK |
0 |
Visar endast OK-knappen. |
vbOKAvbryt |
1 |
Visar knapparna OK och Avbryt. |
vbAbortRetryIgnore |
2 |
Visar knapparna Avbryt, Försök igen och Ignorera. |
vbJaNejAvbryt |
3 |
Visar knapparna Ja, Nej och Avbryt. |
vbJaNej |
4 |
Visar knapparna Ja och Nej. |
vbRetryCancel |
5 |
Visar knapparna Försök igen och Avbryt. |
vbKritisk |
16 |
Visar ikonen för kritiskt meddelande. |
vbFråga |
32 |
Visar ikon för varningsfråga. |
vbUtrop |
48 |
Visar varningsmeddelandeikon. |
vbInformation |
64 |
Visar informationsmeddelandeikon. |
vbDefaultButton1 |
0 |
Första knappen är standard. |
vbDefaultButton2 |
256 |
Den andra knappen är standard. |
vbDefaultButton3 |
512 |
Den tredje knappen är standard. |
vbDefaultButton4 |
768 |
Fjärde knappen är standard. |
Kolla in hur det ser ut. När du utför denna procedur tilldelas variabeln Ans värdet antingen vbYes eller vbNo, beroende på vilken knapp användaren klickar på. Select Case-satsen använder Ans-värdet för att bestämma vilken åtgärd koden ska utföra.
En enkel meddelandelåda, med två knappar.
Du kan också använda MsgBox-funktionens resultat utan att använda en variabel, vilket följande exempel visar:
Sub GetAnswer2()
Om MsgBox(“Börja skriva ut?”, vbYesNo) = vbYes Then
' ...[kod om Ja klickas]...
Annan
' ...[kod om Ja inte klickas]...
Avsluta om
Avsluta Sub