Een functie die ik vaak gebruik is de MsgBox functie. Met de ingebouwde dialoogvensters (message boxes) kom je al een heel eind…als je de juiste argumenten en constanten wat kent. Er zijn er vast meer dan je zelf al gebruikt heb. Daarom hier een overzicht van de beschikbare argumenten en constanten, gevolgd door wat voorbeelden.

Sub welkom()

MsgBox "Neem eens een kijkje op http://www.exhelp.be!", vbYesNo + vbInformation, "Welkom"

End Sub

De syntaxis van deze functie ziet er als volgt uit:
MsgBox(aanwijzing [,knoppen] [,titel] [,helpbestand] [,context])

aanwijzing

De aanwijzing is het enige vereiste argument. Wat je hier plaatst zal worden weergegeven in het dialoogvenster.

Je kan meerdere regels gebruiken door deze te scheiden met een teken voor regeleinde (Chr(13)) of een teken voor regelinvoer (Chr(10)).

knoppen

Het argument knoppen vind ik persoonlijk het leukste. Hier kan je heel wat constanten aanroepen die het uiterlijk van je dialoogvenster beïnvloeden.

Zo bepaalt dit de knoppen die moeten worden weergegeven, de te gebruiken pictogramstijl, de identiteit van de standaardknop en de modaliteit van het berichtvenster. Als dit argument wordt weggelaten, wordt 0 (vbOKOnly) gebruikt als standaardwaarde.

Hier een lijst met de verschillende constanten en hun betekenis. Verder in dit artikel zal ik enkele voorbeelden laten zien.

ConstanteWaardeBeschrijvingGroep
vbOKOnly0Alleen de knop OK wordt weergegeven. (standaard)Weergave knoppen
vbOKCancel1De knoppen OK en Annuleren worden weergegeven.Weergave knoppen
vbAbortRetryIgnore2De knoppen Afbreken, Opnieuw en Negeren worden weergegeven.Weergave knoppen
vbYesNoCancel3De knoppen Ja, Nee en Annuleren worden weergegeven.Weergave knoppen
vbYesNo4De knoppen Ja en Nee worden weergegeven.Weergave knoppen
vbRetryCancel5De knoppen Opnieuw en Annuleren worden weergegeven.Weergave knoppen
vbCritical16Het pictogram Belangrijk bericht wordt weergegeven.Pictogramstijl
vbQuestion32Het pictogram Waarschuwingsquery wordt weergegeven.Pictogramstijl
vbExclamation48Het pictogram Waarschuwingsbericht wordt weergegeven.Pictogramstijl
vbInformation64Het pictogram Informatief bericht wordt weergegeven.Pictogramstijl
vbDefaultButton10Eerste knop is standaard.Standaardknop
vbDefaultButton2256Tweede knop is standaard.Standaardknop
vbDefaultButton3512Derde knop is standaard.Standaardknop
vbDefaultButton4768Vierde knop is standaard.Standaardknop
vbApplicationModal0Toepassing modaal. De gebruiker moet reageren op het berichtvenster voordat hij of zij verder kan werken in de huidige toepassing.Modaliteit berichtvenster
vbSystemModal4096Systeem modaal. Alle toepassingen worden opgeschort totdat de gebruiker reageert op het berichtvenster.Modaliteit berichtvenster
vbMsgBoxHelpButton16384De knop Help wordt toegevoegd aan het berichtvenster.Overig
VbMsgBoxSetForeground65536Het berichtvenster wordt gespecificeerd als het venster op de voorgrond.Overig
vbMsgBoxRight524288Tekst is rechts uitgelijnd.Overig
vbMsgBoxRtlReading1048576Hiermee wordt aangegeven dat tekst moet worden weergegeven als tekst die van rechts naar links moet worden gelezen in Hebreeuwse en Arabische systemen.Overig

Je kan meerdere constanten tegelijk gebruiken door ze te scheiden met een +.
Bijvoorbeeld: vbYesNo + vbInformation

Retourwaarden

Wanneer er op één van de knoppen gedrukt wordt, kan je hier uiteraard ook een actie aan koppelen. Hiervoor heb je de retourwaardes nodig. De verschillende mogelijkheden:

ConstanteWaardeBeschrijving
vbOK1OK
vbCancel2Annuleren
vbAbort3Afbreken
vbRetry4Opnieuw
vbIgnore5Negeren
vbYes6Ja
vbNo7Nee

Hoe dit wordt toegepast, zie je in de voorbeelden onderaan dit artikel.

titel

Bepaalt de titel die wordt weergegeven in de titelbalk. Wanneer dit argument wordt weggelaten, wordt de naam van de toepassing weergegeven.

helpbestand + context

Als zowel helpbestand als context is opgegeven, kan de gebruiker op F1 (Windows) of HELP (Macintosh) drukken om het Help-onderwerp te bekijken dat bij de context behoort. Persoonlijk gebruik ik deze argumenten niet. Ze kunnen wel handig zijn, maar het is best veel werk om zo’n Help-bestand te maken. Daarom ga ik er niet dieper op in gaan. Hier de omschrijving van Microsoft Online:

helpbestand: Optioneel. Tekenreeksexpressie waarmee het Help-bestand wordt aangeduid dat moet worden gebruikt om contextgevoelige Help-tekst te bieden voor het dialoogvenster. Als helpbestand wordt opgegeven, moet ook context worden gespecificeerd.

context: Optioneel. Tekenreeksexpressie waarmee het contextnummer van de Help-tekst wordt aangeduid dat is toegewezen aan het desbetreffende Help-onderwerp door de auteur van de Help-tekst. Als context wordt opgegeven, moet ook helpbestand worden gespecificeerd.

Voorbeelden

Dialoogvenster met tekst en een “OK” knop.

MsgBox "http://www.exhelp.be"

Dialoogvenster met tekst, een “OK” knop en het pictogram ‘Informatief bericht’.

MsgBox "http://www.exhelp.be", vbInformation

Dialoogvenster met tekst, een “OK” knop en het pictogram ‘Belangrijk bericht’.

MsgBox "http://www.exhelp.be", vbOKOnly+vbCritical

Dialoogvenster met tekst, een “OK” knop, het pictogram ‘Waarschuwingsbericht’ en een aangepaste titel.

MsgBox "http://www.exhelp.be", vbExclamation, "Mijn titel"

Dialoogvenster met “Yes” en “No” knoppen. Het resultaat is een integer, de retourwaarden zijn vbYes en vbNo.

Antwoord = MsgBox("Wil je doorgaan?", vbYesNo)

Dialoogvenster met “Yes” en “No” knoppen en het pictogram “Waarschuwingsquery”. Het resultaat is een integer, de retourwaarden zijn vbYes en vbNo.

Antwoord = MsgBox("Wil je doorgaan?", vbYesNo + vbQuestion)

Dialoogvenster met “Yes” en “No” knoppen, het pictogram “Waarschuwingsquery” en een aangepaste titel. Het resultaat is een integer, de retourwaarden zijn vbYes en vbNo.

Antwoord = MsgBox("Wil je doorgaan?", vbYesNo + vbQuestion, "Mijn titel")

Dialoogvenster met “Yes” en “No” knoppen, het pictogram “Waarschuwingsquery” en een aangepaste titel. Het resultaat is een integer, de retourwaarden zijn vbYes en vbNo. De tweede knop is standaard, in dit geval “No”. Zoals je kan zien kan men zowel de waarden (vb. 256) als de constanten gebruiken (vb. vbDefaultButton2)

Antwoord = MsgBox("Wil je doorgaan?", vbYesNo + 256 + vbQuestion, "Mijn titel")

Dialoogvenster met “OK” en “Cancel” knoppen en een aangepaste titel. Het resultaat is een integer, de retourwaarden zijn vbOK en vbCancel.

Antwoord = MsgBox("Wil je doorgaan?", vbOKCancel, "Mijn titel")

Resultaat in variabele

Het resultaat van de MsgBox functie kan in een variabele opgeslagen worden. De variabele moet het type Integer hebben. Deze variabele kunnen we dan als volgt gebruiken later in onze VBA code:

Antwoord = MsgBox("Wil je doorgaan?", vbOKCancel, "Mijn titel")
If Antwoord = vbCancel Then Exit Sub

De macro zal beëindigd worden wanneer men op Cancel drukt.

Het kan uiteraard ook zo:

If MsgBox("Wil je doorgaan?", vbOKCancel, "Mijn titel") = vbCancel then Exit Sub