Denne opplæringen vil dekke hvordan du bruker VBA MsgBox -funksjonen til å vise meldingsbokser til brukere (inkludert YesNo Messagebox). Du kan også være interessert i artikkelen vår om InputBoxes.
VBA MsgBox -funksjon
I VBA er det enkelt å vise en enkel MsgBox:
1 | MsgBox "Dette er en meldingsboks" |
Du kan imidlertid gjøre mye mer enn å vise en enkel OK meldingsboks. La oss raskt se på et komplisert eksempel før vi dykker ned i detaljer …
VBA Ja Ingen meldingsboks
Nedenfor lager vi en meldingsboks med:
- En tittel "Message Box Title" og spørsmål "Text"
- Et spørsmålstegnikon
- Ja / Nei alternativer i stedet for en enkel "OK"
- Standardknapp = 'Nei'
123 | Dim svar som heltallanswer = MsgBox ("Text", vbQuestion + vbYesNo + vbDefaultButton2, "Message Box Title") |
Meldingsboksen returnerer vbYes eller vbNo avhengig av brukerens valg. Du kan deretter utføre forskjellige handlinger basert på valget:
12345 | Hvis svar = vbJa DaMsgBox "Ja"EllersMsgBox "Nei"Slutt om |
I den neste delen viser vi deg alle tilgjengelige alternativer når du oppretter meldingsbokser. Deretter vil vi introdusere deg for syntaksen til MsgBox -funksjonen og til slutt gå over andre meldingsbokseksempler.
Alternativer for VBA -meldingsboks
Ta en titt på bildet nedenfor. Her vil du se (nesten) alle alternativene som er tilgjengelige for deg når du oppretter meldingsbokser. Legg merke til ikonene og de forskjellige knappene.
Dette er et skjermbilde av "MessageBox Builder" fra vårt Premium VBA-tillegg: AutoMacro. Med MessageBox Builder kan du raskt designe ønsket meldingsboks og sette inn koden i kodemodulen. Den inneholder også mange andre kodebyggere, et omfattende VBA -kodebibliotek og et utvalg kodingsverktøy. Det er et must for enhver VBA-utvikler.
Syntaks for MsgBox -funksjonen
MsgBox (ledetekst [, knapper] [, tittel] [, hjelpefil, kontekst])
ledetekst (påkrevd) - Dette er teksten i hovedmeldingsboksen.
knappene - Velg hvilke knapper som skal vises. Hvis du utelater det, "OK". Her kan du også angi hvilket ikon som skal vises og standardknappen.
tittel - Tittelen øverst i meldingsboksen. Hvis den utelates, vises navnet på den gjeldende applikasjonen (f.eks. Microsoft Excel).
hjelpefil - Spesifiser hjelpefil som kan nås når brukeren klikker på "Hjelp" -knappen. Hvis spesifisert, må du også legge til kontekst (nedenfor)
kontekst - Numerisk uttrykk som representerer Hjelp -kontekstnummeret som er tilordnet det aktuelle hjelpeemnet.
Du kan sannsynligvis ignorere hjelpefilen og kontekstargumentene. Jeg har aldri sett dem brukt.
Tilpass meldingstittel og spørsmål
MsgBox -funksjonen lar deg tilpasse tittelen og meldingene slik:
1 | Msgbox "Spør", "Tittel" |
Et annet eksempel:
123 | Sub MsgBoxPromptTitle ()MsgBox "Trinn 1 fullført. Klikk OK for å kjøre trinn 2." ,, "Trinn 1 av 5"Slutt Sub |
Viktig! Du må huske å omgi teksten med sitater.
MessageBox LineBreaks
Du kan også legge til linjeskift i meldingsboksen din med "vbNewLine".
123 | Sub MsgBoxPromptTitle_NewLine ()MsgBox "Trinn 1 fullført." & vbNewLine & "Klikk OK for å kjøre trinn 2.",, "Trinn 1 av 5"Slutt Sub |
Legg merke til at vi bruker symbolet & for å kombinere tekst. Du kan lære mer om hvordan du bruker & med tekst og andre alternativer for å sette inn linjebrudd i vår artikkel om sammenføyning av tekst.
MsgBox -ikoner
VBA gir deg muligheten til å legge til ett av fire forhåndsbygde ikoner i meldingsboksene dine:
Ikon konstant | Ikon |
---|---|
vbInformasjon | ![]() |
vbKritisk | ![]() |
vbSpørsmål | ![]() |
vbUtrop | ![]() |
Ikon -konstanten bør plasseres i knappargumentet:
123 | Sub MsgBoxQuestionIcon ()MsgBox "spørsmålseksempel", vbQuestionSlutt Sub |
Dette vil generere standard "OK" meldingsboks med spørsmålikonet:
Legg merke til hvordan VBA Editor viser deg alternativene som er tilgjengelige for deg når du skriver:
Dette er nyttig fordi du ikke trenger å huske den eksakte syntaksen eller navnene på ikoner eller knapper.
Nå vil vi demonstrere hvert meldingsboksikon:
MsgBox Ikoner - Informasjon
123 | Sub MsgBoxInformationIcon ()MsgBox "Informasjonseksempel", vbInformationSlutt Sub |
MsgBox Ikoner - Kritisk
123 | Sub MsgBoxCriticalIcon ()MsgBox "Kritisk eksempel", vbCriticalSlutt Sub |
MsgBox Icons - Spørsmål
123 | Sub MsgBoxQuestionIcon ()MsgBox "spørsmålseksempel", vbQuestionSlutt Sub |
MsgBox Icons - Utrop
123 | Sub MsgBoxExclamationIcon ()MsgBox "Utropseksempel", vbExclamationSlutt Sub |
Nedenfor vil vi snakke om å generere meldingsbokser med forskjellige knappelayouter. Hvis du velger en annen meldingstype, må du legge til ikonet etter knappene med en "+":
123 | Sub MsgBoxQuestionIcon ()MsgBox "Vil du fortsette?", VbOKCancel + vbQuestionSlutt Sub |
MsgBox -variabler
Så langt har vi hovedsakelig jobbet med standard "OK" meldingsboks. OK -meldingsboksen har bare ett alternativ: Ved å trykke ‘OK’ kan koden fortsette. Du kan imidlertid også angi andre knappegrupper: OK / Avbryt, Ja / Nei, etc.
I så fall vil du utføre forskjellige handlinger basert på hvilken knapp som trykkes. La oss se på et eksempel.
Her er meldingsboksen vi vil generere:
Dette er hele koden (vi vil bryte den ned neste):
123456789101112 | Sub MsgBoxVariable ()Dim svar som heltallanswer = MsgBox ("Vil du fortsette?", vbQuestion + vbYesNo)Hvis svar = vbJa DaMsgBox "Ja"EllersMsgBox "Nei"Slutt omSlutt Sub |
Først tilordner vi meldingsboksutgangen til en heltallsvariabel.
123 | Dim svar som heltallanswer = MsgBox ("Vil du fortsette?", vbQuestion + vbYesNo) |
Deretter bruker vi en If-Else for å bestemme hva vi skal gjøre basert på hvilken knapp som trykkes:
12345 | Hvis svar = vbJa DaMsgBox "Ja"EllersMsgBox "Nei"Slutt om |
MsgBox-funksjonen returnerer en heltallsverdi (mellom 1-7), så vi definerer variabelen som en heltallstype. I stedet for å referere til heltallstallet kan du imidlertid referere til en konstant (f.eks. VbOK, vbCancel, etc.). Se på denne tabellen for å se alle alternativene:
Knapp | Konstant | Verdi |
---|---|---|
OK | vbOK | 1 |
Avbryt | vbCancel | 2 |
Avbryte | vbAbort | 3 |
Prøv igjen | vbRetry | 4 |
Overse | vbIgnore | 5 |
Ja | vbJa | 6 |
Nei | vbNei | 7 |
Nå vil vi demonstrere hver knappgruppering:
OK Meldingsboks - vbOKOnly
Dette er standard VBA -meldingsboks.
123456 | Sub MsgBox_OKOnly ()Dim svar som heltallsvar = MsgBox ("OKOnly eksempel", vbOKOnly)Slutt Sub |
OK Avbryt meldingsboks - vbOKCancel
123456789101112 | Sub MsgBox_OKCancel ()Dim svar som heltallanswer = MsgBox ("OK Avbryt eksempel", vbOKCancel)Hvis svar = vbOK DaMsgBox "OK"EllersMsgBox "Avbryt"Slutt omSlutt Sub |
Ja Nei Meldingsboks - vbJa Nei
123456789101112 | Sub MsgBox_YesNo ()Dim svar som heltallsvar = MsgBox ("Ja nei eksempel", vbYesNo)Hvis svar = vbJa DaMsgBox "Ja"EllersMsgBox "Nei"Slutt omSlutt Sub |
Ja Nei Avbryt meldingsboks - vbYesNoCancel
1234567891011121314 | Sub MsgBox_YesNoCancel ()Dim svar som heltallanswer = MsgBox ("Ja Nei Avbryt eksempel", vbYesNoCancel)Hvis svar = vbJa DaMsgBox "Ja"ElseIf svar = vbNo DaMsgBox "Nei"EllersMsgBox "Avbryt"Slutt omSlutt Sub |
Avbryt Prøv på nytt Ignorer meldingsboks - vbAbortRetryIgnore
1234567891011121314 | Sub MsgBox_AbortRetryIgnore ()Dim svar som heltallanswer = MsgBox ("Avbryt prøve Ignorer eksempel", vbAbortRetryIgnore)Hvis svar = vbAbort DaMsgBox "Avbryt"ElseIf svar = vbRetry DaMsgBox "Prøv igjen"EllersMsgBox "Ignorer"Slutt omSlutt Sub |
Prøv på nytt Avbryt meldingsboks - vbRetryCancel
123456789101112 | Sub MsgBox_RetryCancel ()Dim svar som heltallanswer = MsgBox ("Prøv på nytt Avbryt eksempel", vbRetryCancel)Hvis svar = vbRetry DaMsgBox "Prøv igjen"EllersMsgBox "Avbryt"Slutt omSlutt Sub |
VBA MessageBox -eksempler
Meldingsboksbekreftelse før du kjører makro
Denne koden viser en Ja Nei meldingsboks før du ringer til en makro. Hvis du klikker på Ja, kalles makroen, og hvis Nei klikkes, kjøres ikke makroen.
12345678 | Sub Msgbox_BeforeRunning ()Dim svar som heltallanswer = MsgBox ("Vil du kjøre Macro1?", vbQuestion + vbYesNo)Hvis svar = vbJa, ring deretter Makro1Slutt Sub |
Ja / Nei Meldingsboks - Avslutt sub
Her vil vi bekrefte med brukeren om vi skal fortsette å kjøre en makro. Hvis du klikker Nei, vil koden gå ut av suben, ellers fortsetter prosedyren.
12345678910 | Sub Msgbox_BeforeRunning ()Dim svar som heltallanswer = MsgBox ("Vil du fortsette?", vbQuestion + vbYesNo)Hvis svar = vbNo, avslutt deretter Sub'Noen koderSlutt Sub |
VBA -meldingsboks i Access VBA
Alle eksemplene ovenfor fungerer nøyaktig det samme i Access VBA som i Excel VBA.