Du er sikkert bekendt med VBA MsgBox-funktionen. MsgBox-funktionen, som accepterer argumenterne vist nedenfor, er praktisk til at vise information og få simpel brugerinput. Det er i stand til at få brugerinput, fordi det er en funktion. En funktion returnerer, som du sikkert ved, en værdi. I tilfælde af MsgBox-funktionen bruger den en dialogboks til at få den værdi, den returnerer. Fortsæt med at læse for at se præcis, hvordan det fungerer.
Argument |
Hvad det påvirker |
Hurtig |
Teksten Excel vises i meddelelsesboksen |
Knapper |
Et tal, der specificerer, hvilke knapper (sammen med hvilket ikon), der
vises i meddelelsesboksen (valgfrit) |
Titel |
Teksten, der vises i meddelelsesboksens titellinje
(valgfrit) |
Her er en forenklet version af syntaksen for MsgBox-funktionen:
MsgBox(prompt[, knapper][, titel])
Viser en simpel beskedboks
Du kan bruge MsgBox-funktionen på to måder:
-
For blot at vise en besked til brugeren: I dette tilfælde er du ligeglad med resultatet, der returneres af funktionen.
-
Sådan får du et svar fra brugeren: I dette tilfælde er du ligeglad med resultatet, der returneres af funktionen. Resultatet afhænger af den knap, som brugeren klikker på.
Hvis du bruger MsgBox-funktionen alene, skal du ikke inkludere parenteser omkring argumenterne. Følgende eksempel viser blot en meddelelse og returnerer ikke et resultat. Når meddelelsen vises, stopper koden, indtil brugeren klikker på OK.
Sub MsgBoxDemo()
MsgBox "Klik på OK for at begynde udskrivning."
Sheets ("Resultater"). Udskriv
Slut Sub
Se nedenfor for at se, hvordan denne beskedboks ser ud. I dette tilfælde begynder udskrivningen, når brugeren klikker på OK. Lægger du mærke til, at der ikke er nogen måde at annullere udskrivningen? Fortsæt med at læse for at finde ud af, hvordan du løser det.
En simpel beskedboks.
Får et svar fra en beskedboks
Hvis du viser en beskedboks, der har mere end blot en OK-knap, vil du sikkert gerne vide, hvilken knap brugeren klikker på. Du er heldig. MsgBox-funktionen kan returnere en værdi, der repræsenterer, hvilken knap der klikkes på. Du kan tildele resultatet af MsgBox-funktionen til en variabel.
I den følgende kode bruges nogle indbyggede konstanter, der gør det nemt at arbejde med de værdier, der returneres af MsgBox:
Sub GetAnswer()
Dim Ans As Long
Ans = MsgBox(“Start udskrivning?”, vbYesNo)
Vælg Case Ans
Sag vbJa
ActiveSheet.PrintOut
Sag vbNr
MsgBox "Udskrivning annulleret"
Afslut Vælg
Slut Sub
Konstant |
Værdi |
Hvad det gør |
Kun vbOK |
0 |
Viser kun OK-knappen. |
vbOKAnnuller |
1 |
Viser knapperne OK og Annuller. |
vbAbortRetryIgnore |
2 |
Viser knapperne Afbryd, Prøv igen og Ignorer. |
vbJaNejAnnuller |
3 |
Viser knapperne Ja, Nej og Annuller. |
vbJaNej |
4 |
Viser knapperne Ja og Nej. |
vbRetryCancel |
5 |
Viser knapperne Prøv igen og Annuller. |
vbKritisk |
16 |
Viser ikonet for kritisk meddelelse. |
vbSpørgsmål |
32 |
Viser ikon for advarselsforespørgsel. |
vbUdråb |
48 |
Viser ikonet for advarselsmeddelelse. |
vbInformation |
64 |
Viser informationsmeddelelsesikon. |
vbDefaultButton1 |
0 |
Den første knap er standard. |
vbDefaultButton2 |
256 |
Anden knap er standard. |
vbDefaultButton3 |
512 |
Tredje knap er standard. |
vbDefaultButton4 |
768 |
Fjerde knap er standard. |
Tjek hvordan det ser ud. Når du udfører denne procedure, tildeles Ans-variablen en værdi på enten vbYes eller vbNo, afhængigt af hvilken knap brugeren klikker på. Select Case-sætningen bruger Ans-værdien til at bestemme, hvilken handling koden skal udføre.
En simpel beskedboks med to knapper.
Du kan også bruge MsgBox-funktionens resultat uden at bruge en variabel, som følgende eksempel viser:
Sub GetAnswer2()
Hvis MsgBox(“Start udskrivning?”, vbYesNo) = vbYes Then
' ...[kode hvis der klikkes på Ja]...
Andet
' ...[kode, hvis der ikke er klikket på Ja]...
Afslut Hvis
Slut Sub