In deze zelfstudie wordt beschreven hoe u de VBA MsgBox-functie gebruikt om berichtenboxen aan gebruikers weer te geven (inclusief de YesNo Messagebox). Mogelijk bent u ook geïnteresseerd in ons artikel over InputBoxen.
VBA MsgBox-functie
In VBA is het eenvoudig om een eenvoudige MsgBox weer te geven:
1 | MsgBox "Dit is een berichtenbox" |
U kunt echter veel meer doen dan een eenvoudig OK-berichtvenster weergeven. Laten we snel een ingewikkeld voorbeeld bekijken voordat we in details duiken …
VBA Ja Nee Berichtenvak
Hieronder zullen we een berichtvenster maken met:
- Een titel "Titel berichtvenster" en prompt "Tekst"
- Een vraagtekenpictogram
- Ja / Nee opties in plaats van een simpele "OK"
- Standaardknop = 'Nee'
123 | Dim antwoord als geheel getalanswer = MsgBox("Text", vbQuestion + vbYesNo + vbDefaultButton2, "Message Box Title") |
Het berichtvenster zal vbJa of vbNee retourneren, afhankelijk van de keuze van de gebruiker. Vervolgens kunt u op basis van de keuze verschillende acties uitvoeren:
12345 | Als antwoord = vbJa DanMsgBox "Ja"AndersMsgBox "Nee"Stop als |
In het volgende gedeelte laten we u alle beschikbare opties zien bij het maken van berichtvensters. Vervolgens zullen we u kennis laten maken met de syntaxis van de MsgBox-functie en tot slot andere voorbeelden van berichtenboxen bespreken.
Opties voor VBA-berichtenbox
Kijk eens naar de afbeelding hieronder. Hier ziet u (bijna) alle beschikbare opties bij het maken van berichtenboxen. Let op de pictogrammen en de verschillende knoppen.
Dit is een screenshot van de "MessageBox Builder" van onze Premium VBA-invoegtoepassing: AutoMacro. Met de MessageBox Builder kunt u snel uw gewenste berichtenbox ontwerpen en de code in uw codemodule invoegen. Het bevat ook veel andere codebuilders, een uitgebreide VBA-codebibliotheek en een assortiment codeertools. Het is een must-have voor elke VBA-ontwikkelaar.
Syntaxis van MsgBox-functie
MsgBox( prompt [, buttons ] [, title ] [, helpfile, context ] )
prompt (verplicht) - Dit is de primaire tekst van het berichtvenster.
toetsen - Kies welke knoppen u wilt weergeven. Indien weggelaten, ‘Alleen OK’. Hier kunt u ook aangeven welk pictogram u wilt weergeven en de standaardknop.
titel - De titel bovenaan het berichtvenster. Indien weggelaten, wordt de naam van de huidige applicatie weergegeven (bijv. Microsoft Excel).
helpbestand - Specificeer het helpbestand dat toegankelijk is wanneer de gebruiker op de knop 'Help' klikt. Indien opgegeven, moet u ook context toevoegen (hieronder)
context - Numerieke uitdrukking die het Help-contextnummer vertegenwoordigt dat is toegewezen aan het juiste Help-onderwerp.
U kunt het helpbestand en de contextargumenten waarschijnlijk negeren. Ik heb ze nog nooit gebruikt gezien.
Titel en prompt van berichtvenster aanpassen
Met de MsgBox-functie kunt u de titel en promptberichten als volgt aanpassen:
1 | Msgbox "Prompt",,"Titel" |
Een ander voorbeeld:
123 | Sub MsgBoxPromptTitle()MsgBox "Stap 1 voltooid. Klik op OK om stap 2 uit te voeren",, "Stap 1 van 5"Einde sub |
Belangrijk! Vergeet niet om uw tekst te omringen met citaten.
MessageBox Line Breaks
U kunt ook regeleinden toevoegen aan uw berichtvensterprompts met 'vbNewLine'.
123 | Sub MsgBoxPromptTitle_NewLine()MsgBox "Stap 1 voltooid." & vbNewLine & "Klik op OK om stap 2 uit te voeren", , "Stap 1 van 5"Einde sub |
Merk op dat we het &-symbool gebruiken om tekst samen te voegen. U kunt meer leren over het gebruik van & met tekst en andere opties voor het invoegen van regeleinden in ons artikel over het samenvoegen van tekst.
MsgBox-pictogrammen
VBA geeft u de mogelijkheid om een van de vier vooraf gebouwde pictogrammen aan uw berichtvensters toe te voegen:
Icoon Constant | Icoon |
---|---|
vbInformatie | ![]() |
vbKritiek | ![]() |
vbVraag | ![]() |
vbUitroepteken | ![]() |
De Icon-constante moet binnen het knopargument worden geplaatst:
123 | Sub MsgBoxQuestionIcon()MsgBox "Vraagvoorbeeld", vbVraagEinde sub |
Dit genereert het standaard 'OK'-berichtvenster met het pictogram Vraag:
Merk op hoe wanneer u typt, de VBA-editor u de beschikbare opties laat zien:
Dit is handig omdat u de exacte syntaxis of namen van pictogrammen of knoppen niet hoeft te onthouden.
Nu zullen we elk berichtvakpictogram demonstreren:
MsgBox-pictogrammen - Informatie
123 | Sub MsgBoxInformationIcon()MsgBox "Informatievoorbeeld", vbInformationEinde sub |
MsgBox-pictogrammen - kritiek
123 | Sub MsgBoxCriticalIcon()MsgBox "Kritiek voorbeeld", vbCriticalEinde sub |
MsgBox-pictogrammen - Vraag
123 | Sub MsgBoxQuestionIcon()MsgBox "Vraagvoorbeeld", vbVraagEinde sub |
MsgBox-pictogrammen - Uitroepteken
123 | Sub MsgBoxExclamationIcon()MsgBox "Exclamation Voorbeeld", vbExclamationEinde sub |
Hieronder zullen we het hebben over het genereren van berichtvensters met verschillende knoplay-outs. Als u een ander type berichtvak kiest, moet u het pictogramtype na de knoppen toevoegen met een "+":
123 | Sub MsgBoxQuestionIcon()MsgBox "Wilt u doorgaan?", vbOKCancel + vbQuestionEinde sub |
MsgBox-variabelen
Tot nu toe hebben we voornamelijk gewerkt met het standaard 'OK'-berichtvenster. Het OK-berichtvenster heeft maar één optie: door op 'OK' te drukken, kan de code doorgaan. U kunt echter ook andere knopgroeperingen opgeven: OK / Annuleren, Ja / Nee, enz.
In dat geval wilt u verschillende acties uitvoeren op basis van welke knop wordt ingedrukt. Laten we een voorbeeld bekijken.
Hier is het berichtvenster dat we zullen genereren:
Dit is de volledige code (we zullen het hierna opsplitsen):
123456789101112 | Sub MsgBoxVariable()Dim antwoord als geheel getalanswer = MsgBox("Wilt u doorgaan?", vbQuestion + vbYesNo)Als antwoord = vbJa DanMsgBox "Ja"AndersMsgBox "Nee"Stop alsEinde sub |
Eerst wijzen we de output van de messagebox toe aan een integer-variabele.
123 | Dim antwoord als geheel getalanswer = MsgBox("Wilt u doorgaan?", vbQuestion + vbYesNo) |
Vervolgens gebruiken we een If-Else om te bepalen wat te doen op basis van welke knop wordt ingedrukt:
12345 | Als antwoord = vbJa DanMsgBox "Ja"AndersMsgBox "Nee"Stop als |
De functie MsgBox retourneert een geheel getal (tussen 1-7), dus we definiëren de variabele als een geheel getal. In plaats van naar het gehele getal te verwijzen, kunt u echter verwijzen naar een constante (bijv. vbOK, vbCancel, etc.). Bekijk deze tabel om alle opties te zien:
Knop | Constante | Waarde |
---|---|---|
Oke | vbOK | 1 |
Annuleren | vbAnnuleren | 2 |
Afbreken | vbAfbreken | 3 |
Opnieuw proberen | vbOpnieuw proberen | 4 |
Negeren | vbNegeren | 5 |
Ja | vbJa | 6 |
Nee | vbNee | 7 |
Nu zullen we elke knopgroepering demonstreren:
OK Berichtenbox - alleen vbOK
Dit is de standaard VBA-berichtenbox.
123456 | Sub MsgBox_OKOnly()Dim antwoord als geheel getalanswer = MsgBox ("OKOnly-voorbeeld", vbOKOnly)Einde sub |
OK Annuleer Berichtenbox - vbOKCancel
123456789101112 | Sub MsgBox_OKCancel()Dim antwoord als geheel getalanswer = MsgBox("OK Annuleren Voorbeeld", vbOKCancel)Als antwoord = vbOK DanMsgBox "OK"AndersMsgBox "Annuleren"Stop alsEinde sub |
Ja Nee Berichtenbox - vbJaNee
123456789101112 | Sub MsgBox_JaNee()Dim antwoord als geheel getalanswer = MsgBox("Ja Nee Voorbeeld", vbJaNee)Als antwoord = vbJa DanMsgBox "Ja"AndersMsgBox "Nee"Stop alsEinde sub |
Ja Nee Berichtenvak annuleren - vbYesNoCancel
1234567891011121314 | Sub MsgBox_YesNoCancel()Dim antwoord als geheel getalanswer = MsgBox("Ja Nee Annuleringsvoorbeeld", vbYesNoCancel)Als antwoord = vbJa DanMsgBox "Ja"ElseIf antwoord = vbNee DanMsgBox "Nee"AndersMsgBox "Annuleren"Stop alsEinde sub |
Afbreken Opnieuw Negeer berichtvenster - vbAbortRetryIgnore
1234567891011121314 | Sub MsgBox_AbortRetryIgnore()Dim antwoord als geheel getalanswer = MsgBox ("Afbreken opnieuw proberen voorbeeld negeren", vbAbortRetryIgnore)Als antwoord = vbAfbreken DanMsgBox "Afbreken"ElseIf antwoord = vbProbeer het dan opnieuwMsgBox "Opnieuw proberen"AndersMsgBox "Negeren"Stop alsEinde sub |
Opnieuw proberen Annuleren Berichtenvak - vbRetryCancel
123456789101112 | Sub MsgBox_RetryCancel()Dim antwoord als geheel getalanswer = MsgBox ("Retry Cancel-voorbeeld", vbRetryCancel)Als antwoord = vbProbeer het opnieuw danMsgBox "Opnieuw proberen"AndersMsgBox "Annuleren"Stop alsEinde sub |
Voorbeelden van VBA MessageBox
Bevestiging berichtvenster voordat macro wordt uitgevoerd
Deze code geeft een Ja Nee Berichtvenster weer voordat een macro wordt aangeroepen. Als op Ja wordt geklikt, wordt de macro aangeroepen, als op Nee wordt geklikt, wordt de macro niet uitgevoerd.
12345678 | Sub Msgbox_BeforeRunning()Dim antwoord als geheel getalanswer = MsgBox("Wilt u Macro1 uitvoeren?", vbQuestion + vbYesNo)Als antwoord = vbJa Bel dan Macro1Einde sub |
Ja / Nee Berichtenbox - Sub afsluiten
Hier zullen we met de gebruiker bevestigen of hij door moet gaan met het uitvoeren van een macro. Als op Nee wordt geklikt, verlaat de code de sub, anders wordt de procedure voortgezet.
12345678910 | Sub Msgbox_BeforeRunning()Dim antwoord als geheel getalanswer = MsgBox("Wilt u doorgaan?", vbQuestion + vbYesNo)Als antwoord = vbNee, verlaat dan Sub'Enkele code'Einde sub |
VBA-berichtenvenster in Access VBA
Alle bovenstaande voorbeelden werken in Access VBA precies hetzelfde als in Excel VBA.