Du er sikkert kjent med VBA MsgBox-funksjonen. MsgBox-funksjonen, som aksepterer argumentene vist nedenfor, er nyttig for å vise informasjon og få enkle brukerinndata. Det er i stand til å få brukerinndata fordi det er en funksjon. En funksjon, som du sikkert vet, returnerer en verdi. Når det gjelder MsgBox-funksjonen, bruker den en dialogboks for å få verdien som den returnerer. Fortsett å lese for å se nøyaktig hvordan det fungerer.
Argument |
Hva det påvirker |
Spør |
Teksten Excel vises i meldingsboksen |
Knapper |
Et tall som spesifiserer hvilke knapper (sammen med hvilket ikon) som
vises i meldingsboksen (valgfritt) |
Tittel |
Teksten som vises i meldingsboksens tittellinje
(valgfritt) |
Her er en forenklet versjon av syntaksen til MsgBox-funksjonen:
MsgBox(spørsmål[, knapper][, tittel])
Viser en enkel meldingsboks
Du kan bruke MsgBox-funksjonen på to måter:
-
For ganske enkelt å vise en melding til brukeren: I dette tilfellet bryr du deg ikke om resultatet som returneres av funksjonen.
-
For å få svar fra brukeren: I dette tilfellet bryr du deg om resultatet som returneres av funksjonen. Resultatet avhenger av knappen som brukeren klikker på.
Hvis du bruker MsgBox-funksjonen alene, må du ikke inkludere parenteser rundt argumentene. Følgende eksempel viser ganske enkelt en melding og returnerer ikke et resultat. Når meldingen vises, stopper koden til brukeren klikker OK.
Sub MsgBoxDemo()
MsgBox "Klikk OK for å begynne utskriften."
Ark ("Resultater"). Skriv ut
End Sub
Se nedenfor for å se hvordan denne meldingsboksen ser ut. I dette tilfellet starter utskriften når brukeren klikker OK. Legger du merke til at det ikke er mulig å avbryte utskriften? Fortsett å lese for å finne ut hvordan du fikser det.
En enkel meldingsboks.
Får svar fra en meldingsboks
Hvis du viser en meldingsboks som har mer enn bare en OK-knapp, vil du sannsynligvis vite hvilken knapp brukeren klikker på. Du er heldig. MsgBox-funksjonen kan returnere en verdi som representerer hvilken knapp som er klikket. Du kan tilordne resultatet av MsgBox-funksjonen til en variabel.
I den følgende koden brukes noen innebygde konstanter som gjør det enkelt å jobbe med verdiene som returneres av MsgBox:
Sub GetAnswer()
Dim Ans As Long
Ans = MsgBox(“Start utskrift?”, vbYesNo)
Velg Case Ans
Sak vbJa
ActiveSheet.PrintOut
Sak vbNr
MsgBox "Utskrift avbrutt"
Avslutt Velg
End Sub
Konstant |
Verdi |
Hva det gjør |
Kun vbOK |
0 |
Viser kun OK-knappen. |
vbOKAvbryt |
1 |
Viser OK og Cancel-knappene. |
vbAbortRetryIgnore |
2 |
Viser knappene Avbryt, Prøv på nytt og Ignorer. |
vbJaNeiAvbryt |
3 |
Viser knappene Ja, Nei og Avbryt. |
vbJaNei |
4 |
Viser Ja- og Nei-knappene. |
vbRetryCancel |
5 |
Viser knappene Prøv på nytt og Avbryt. |
vbKritisk |
16 |
Viser ikonet for kritisk melding. |
vbSpørsmål |
32 |
Viser ikon for advarselsspørring. |
vbUtrop |
48 |
Viser advarselsmeldingsikon. |
vbInformasjon |
64 |
Viser informasjonsmeldingsikon. |
vbDefaultButton1 |
0 |
Den første knappen er standard. |
vbDefaultButton2 |
256 |
Den andre knappen er standard. |
vbDefaultButton3 |
512 |
Tredje knapp er standard. |
vbDefaultButton4 |
768 |
Fjerde knapp er standard. |
Sjekk ut hvordan det ser ut. Når du utfører denne prosedyren, blir Ans-variabelen tildelt en verdi på enten vbYes eller vbNo, avhengig av hvilken knapp brukeren klikker. Select Case-setningen bruker Ans-verdien for å bestemme hvilken handling koden skal utføre.
En enkel meldingsboks, med to knapper.
Du kan også bruke MsgBox-funksjonsresultatet uten å bruke en variabel, som følgende eksempel viser:
Sub GetAnswer2()
If MsgBox(“Start printing?”, vbYesNo) = vbYes Then
' ...[kode hvis ja klikkes]...
Ellers
' ...[kode hvis Ja ikke er klikket]...
Slutt om
End Sub