I Excel VBA kan du bruke MsgBox -funksjonen til å vise en meldingsboks (som vist nedenfor):
En MsgBox er ikke annet enn en dialogboks som du kan bruke til å informere brukerne dine ved å vise en egendefinert melding eller få noen grunnleggende innganger (for eksempel Ja/Nei eller OK/Avbryt).
Mens dialogboksen MsgBox vises, stoppes VBA -koden. Du må klikke på en av knappene i MsgBox for å kjøre den gjenværende VBA -koden.
Merk: I denne opplæringen bruker jeg ordmeldingsboksen og MsgBox om hverandre. Når du arbeider med Excel VBA, må du alltid bruke MsgBox.Anatomi av en VBA MsgBox i Excel
En meldingsboks har følgende deler:
- Tittel: Dette brukes vanligvis til å vise hva meldingsboksen handler om. Hvis du ikke angir noe, viser det programnavnet - som er Microsoft Excel i dette tilfellet.
- Spør: Dette er meldingen du vil vise. Du kan bruke denne plassen til å skrive et par linjer eller til og med vise tabeller/data her.
- Knapp (er): Selv om OK er standardknappen, kan du tilpasse den til å vise knapper som Ja/Nei, Ja/Nei/Avbryt, Prøv på nytt/Ignorer, etc.
- Lukk -ikon: Du kan lukke meldingsboksen ved å klikke på lukkeikonet.
Syntaks for VBA MsgBox -funksjonen
Som jeg nevnte, er MsgBox en funksjon og har en syntaks som ligner på andre VBA -funksjoner.
MsgBox (ledetekst [, knapper] [, tittel] [, hjelpefil, kontekst])
- spør - Dette er et påkrevd argument. Den viser meldingen du ser i MsgBox. I vårt eksempel er teksten "Dette er et eksempel på MsgBox" "ledeteksten". Du kan bruke opptil 1024 tegn i ledeteksten, og kan også bruke den til å vise verdiene til variabler. Hvis du vil vise en melding som har flere linjer, kan du også gjøre det (mer om dette senere i denne opplæringen).
- [knapper] - Det bestemmer hvilke knapper og ikoner som vises i MsgBox. For eksempel, hvis jeg bruker vbOkOnly, viser den bare OK -knappen, og hvis jeg bruker vbOKCancel, viser den både OK- og Avbryt -knappene. Jeg vil dekke forskjellige typer knapper senere i denne opplæringen.
- [tittel] - Her kan du angi hvilken tekst du vil ha i meldingsdialogboksen. Dette vises i tittellinjen i MsgBox. Hvis du ikke angir noe, vises navnet på applikasjonen.
- [hjelpefil] - Du kan angi en hjelpefil som du kan få tilgang til når en bruker klikker på Hjelp -knappen. Hjelpeknappen vises bare når du bruker knappekoden for den. Hvis du bruker en hjelpefil, må du også spesifisere kontekstargumentet.
- [kontekst] - Det er et numerisk uttrykk som er hjelpekontekstnummeret som er tilordnet det aktuelle hjelpeemnet.
Hvis du er ny på konseptet Msgbox, kan du ignorere [helpfile] og [context] argumentene. Jeg har sjelden sett at disse ble brukt.
Merk: Alle argumentene i parenteser er valgfrie. Bare "prompt" -argumentet er obligatorisk.
Excel VBA MsgBox -knappekonstanter (eksempler)
I denne delen vil jeg dekke de forskjellige knappene du kan bruke med en VBA MsgBox.
Før jeg viser deg VBA -koden for den og hvordan MsgBox ser ut, her er en tabell som viser alle de forskjellige knappekonstantene du kan bruke.
Knapp konstant | Beskrivelse |
vbOKBare | Viser bare OK -knappen |
vbOKCancel | Viser knappene OK og Avbryt |
vbAbortRetryIgnore | Viser knappene Avbryt, Prøv igjen og Ignorer |
vbJa Nei | Viser knappene Ja og Nei |
vbYesNoCancel | Viser knappene Ja, Nei og Avbryt |
vbRetryCancel | Viser knappene Prøv igjen og Avbryt |
vbMsgBoxHelpButton | Viser Hjelp -knappen. For at dette skal fungere, må du bruke hjelp- og kontekstargumentene i MsgBox -funksjonen |
vbDefaultButton1 | Gjør den første knappen til standard. Du kan endre nummeret for å endre standardknappen. For eksempel gjør vbDefaultButton2 den andre knappen som standard |
Merk: Mens du går gjennom eksemplene på å lage forskjellige knapper, kan du lure på hva som er poenget med å ha disse knappene hvis det ikke har noen innvirkning på koden.
Det gjør det! Basert på valget kan du kode det du vil at koden skal gjøre. For eksempel, hvis du velger OK, skal koden fortsette, og hvis du klikker Avbryt, skal koden stoppe. Dette kan gjøres ved å bruke variabler og tilordne verdien til meldingsboksen til en variabel. Vi vil dekke dette i de senere delene av denne opplæringen.
La oss nå se på noen eksempler på hvordan de forskjellige knappene kan vises i en MsgBox og hvordan det ser ut.
MsgBox -knapper - vbOKOnly (standard)
Hvis du bare bruker ledeteksten og ikke angir noen av argumentene, får du standard meldingsboks som vist nedenfor:
Nedenfor er koden som vil gi denne meldingsboksen:
Sub DefaultMsgBox () MsgBox "Dette er en prøveboks" Slutt Sub
Vær oppmerksom på at tekststrengen må være i doble anførselstegn.
Du kan også bruke knappen konstant vbOKOnly, men selv om du ikke angir noe, er det tatt som standard.
MsgBox -knapper - OK & Avbryt
Hvis du bare vil vise OK og Avbryt -knappen, må du bruke konstanten vbOKCancel.
Sub MsgBoxOKCancel () MsgBox "Vil du fortsette?", VbOKCancel End Sub
MsgBox -knapper - Avbryt, Prøv på nytt og Ignorer
Du kan bruke konstanten ‘vbAbortRetryIgnore’ til å vise knappene Avbryt, Prøv på nytt og Ignorer.
Sub MsgBoxAbortRetryIgnore () MsgBox "Hva vil du gjøre?", VbAbortRetryIgnore End Sub
MsgBox -knapper - Ja og Nei
Du kan bruke konstanten ‘vbYesNo’ til å vise Ja og Nei -knappene.
Sub MsgBoxYesNo () MsgBox "Should we stop?", VbYesNo End Sub
MsgBox -knapper - Ja, Nei og Avbryt
Du kan bruke konstanten ‘vbYesNoCancel’ til å vise knappene Ja, Nei og Avbryt.
Sub MsgBoxYesNoCancel () MsgBox "Skal vi stoppe?", VbYesNoCancel End Sub
MsgBox -knapper - Prøv på nytt og avbryt
Du kan bruke konstanten ‘vbRetryCancel’ til å vise knappene Prøv igjen og Avbryt.
Sub MsgBoxRetryCancel () MsgBox "Hva vil du gjøre videre?", VbRetryCancel End Sub
MsgBox -knapper - Hjelp -knapp
Du kan bruke konstanten ‘vbMsgBoxHelpButton’ for å vise hjelpeknappen. Du kan bruke den med andre knappekonstanter.
Sub MsgBoxRetryHelp () MsgBox "Hva vil du gjøre videre?", VbRetryCancel + vbMsgBoxHelpButton End Sub
Vær oppmerksom på at i denne koden har vi kombinert to forskjellige knappekonstanter (vbRetryCancel + vbMsgBoxHelpButton). Den første delen viser knappene Prøv igjen og Avbryt, og den andre delen viser Hjelp -knappen.
MsgBox -knapper - Angi en standardknapp
Du kan bruke konstanten ‘vbDefaultButton1’ til å angi den første knappen som standard. Dette betyr at knappen allerede er valgt, og hvis du trykker enter, kjører den knappen.
Nedenfor er koden som vil sette den andre knappen ("Nei" -knappen) som standard.
Sub MsgBoxOKCancel () MsgBox "Hva vil du gjøre videre?", VbYesNoCancel + vbDefaultButton2 End Sub
I de fleste tilfeller er knappen til venstre mest standardknappen. Du kan velge andre knapper ved hjelp av vbDefaultButton2, vbDefaultButton3 og vbDefaultButton4.
Excel VBA MsgBox Icon Constants (eksempler)
Bortsett fra knappene kan du også tilpasse ikonene som vises i dialogboksen MsgBox. For eksempel kan du ha et rødt kritisk ikon eller et blått informasjonsikon.
Nedenfor er en tabell som viser koden som viser det tilhørende ikonet.
Ikon konstant | Beskrivelse |
vbKritisk | Viser ikonet for kritisk melding |
vbSpørsmål | Viser spørsmålikonet |
vbUtrop | Viser advarselsikonet |
vbInformasjon | Viser informasjonsikonet |
MsgBox Ikoner - Kritisk
Hvis du vil vise et kritisk ikon i MsgBox, bruker du vbCritical -konstanten. Du kan bruke dette sammen med andre knappekonstanter (ved å sette et + -tegn mellom kodene).
For eksempel er en kode som viser standard OK -knappen med et kritisk ikon.
Sub MsgBoxCriticalIcon () MsgBox "This is a sample box", vbCritical End Sub
Hvis du vil vise det kritiske ikonet med Ja og Nei -knappene, bruker du følgende kode:
Sub MsgBoxCriticalIcon () MsgBox "This is a sample box", vbYesNo + vbCritical End Sub
MsgBox Icons - Spørsmål
Hvis du vil vise et kritisk ikon i MsgBox, bruker du vbQuestion -konstanten.
Sub MsgBoxQuestionIcon () MsgBox "This is a sample box", vbYesNo + vbQuestion End Sub
MsgBox Icons - Utrop
Hvis du vil vise et utropstegn i MsgBox, bruker du vbExclamation -konstanten.
Sub MsgBoxExclamationIcon () MsgBox "This is a sample box", vbYesNo + vbExclamation End Sub
MsgBox Ikoner - Informasjon
Hvis du vil vise et informasjonsikon i MsgBox, bruker du vbInformation -konstanten.
Sub MsgBoxInformationIcon () MsgBox "This is a sample box", vbYesNo + vbInformation End Sub
Tilpasse tittel og ledetekst i MsgBox
Når du bruker MsgBox, kan du tilpasse tittelen og meldingene.
Så langt har eksemplet vi har sett brukt Microsoft Excel som tittel. Hvis du ikke spesifiserer tittelargumentet, bruker MsgBox automatisk tittelen på programmet (som har vært Microsoft Excel i dette tilfellet).
Du kan tilpasse tittelen ved å spesifisere den i koden som vist nedenfor:
Sub MsgBoxInformationIcon () MsgBox "Vil du fortsette?", VbYesNo + vbQuestion, "Step 1 of 3" End Sub
På samme måte kan du også tilpasse ledeteksten.
Du kan også legge til linjeskift i ledeteksten.
I koden nedenfor har jeg lagt til et linjeskift med ‘vbNewLine’.
Sub MsgBoxInformationIcon () MsgBox "Vil du fortsette?" & vbNewLine & "Click Yes to Continue", vbYesNo + vbQuestion, "Step 1 of 3" End Sub
Du kan også bruke vognreturtegnet - Chr (13) - eller linjemating - Chr (10) for å sette inn en ny linje i ledeteksten.
Vær oppmerksom på at du bare kan legge til en ny linje i ledeteksten og ikke tittelen.
Tilordne MsgBox -verdi til en variabel
Så langt har vi sett eksemplene der vi har opprettet meldingsbokser og tilpasset knappene, ikonene, tittelen og ledeteksten.
Å klikke på en knapp har imidlertid ikke gjort noe.
Med MsgBox -funksjonen i Excel kan du bestemme hva du vil gjøre når en bruker klikker på en bestemt knapp. Og dette er mulig ettersom hver knapp har en verdi knyttet til den.
Så hvis jeg klikker på Ja -knappen, returnerer MsgBox -funksjonen en verdi (6 eller konstant vbYes) som jeg kan bruke i koden min. På samme måte velger brukeren Nei -knappen, den returnerer en annen verdi ((7 eller konstant vbNo)) som jeg kan bruke i koden.
Nedenfor er en tabell som viser de eksakte verdiene og konstanten returnert av MsgBox -funksjonen. Du trenger ikke å huske disse, bare vær oppmerksom på det, og du kan bruke konstantene som er enklere å bruke.
Knapp klikket | 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 |
La oss nå se hvordan vi kan kontrollere VBA -makrokoden basert på hvilken knapp en bruker klikker på.
I koden nedenfor, hvis brukeren klikker på Ja, viser meldingen "Du klikket Ja", og hvis brukeren klikker Nei, viser den "Du klikket Nei".
Sub MsgBoxInformationIcon () Resultat = MsgBox ("Vil du fortsette?", VbYesNo + vbQuestion) Hvis Resultat = vbJa Så klikket MsgBox "Ja" Ellers: MsgBox "Du klikket Nei" End If End Sub Sub
I koden ovenfor har jeg tilordnet verdien til MsgBox -funksjonen til resultatvariabelen. Når du klikker på Ja -knappen, får resultatvariabelen vbJa -konstanten (eller tallet 6), og når du klikker Nei, får resultatvariabelen vbNo -konstanten (eller tallet 7).
Deretter brukte jeg en If Then Else -konstruksjon for å kontrollere om resultatvariabelen inneholder verdien vbYes. Hvis den gjør det, viser den ledeteksten "Du klikket Ja", ellers viser den "Du klikket Nei".
Du kan bruke det samme konseptet til å kjøre en kode hvis en bruker klikker Ja og avslutter suben når han/hun klikker Nei.
Merk: Når du tilordner MsgBox -utgangen til en variabel, må du sette argumentene for MsgBox -funksjonen i parentes. For eksempel i linjen Resultat = MsgBox ("Vil du fortsette?", VbYesNo + vbQuestion), kan du se at argumentene er innenfor parentes.Hvis du vil grave mer inn i meldingsboksen, er det offisielle dokumentet om den.
Du kan også like følgende Excel VBA -opplæringsprogrammer:
- Excel VBA delt funksjon.
- Excel VBA InStr -funksjon.
- Arbeider med celler og områder i Excel VBA.
- Jobber med regneark i VBA.
- Jobber med arbeidsbøker i VBA.
- Bruke Loops i Excel VBA.
- Forstå Excel VBA -datatyper (variabler og konstanter)
- Hvordan lage og bruke personlig makro arbeidsbok i Excel.
- Nyttige eksempler på makrokode i Excel.
- Bruke For Next Loop i Excel VBA.
- Excel VBA Events - En enkel (og komplett) guide.
- Hvordan kjøre en makro i Excel-En komplett trinn-for-trinn-guide.
- Hvordan lage og bruke et Excel-tillegg.