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.
Constante | Waarde | Beschrijving | Groep |
---|---|---|---|
vbOKOnly | 0 | Alleen de knop OK wordt weergegeven. (standaard) | Weergave knoppen |
vbOKCancel | 1 | De knoppen OK en Annuleren worden weergegeven. | Weergave knoppen |
vbAbortRetryIgnore | 2 | De knoppen Afbreken, Opnieuw en Negeren worden weergegeven. | Weergave knoppen |
vbYesNoCancel | 3 | De knoppen Ja, Nee en Annuleren worden weergegeven. | Weergave knoppen |
vbYesNo | 4 | De knoppen Ja en Nee worden weergegeven. | Weergave knoppen |
vbRetryCancel | 5 | De knoppen Opnieuw en Annuleren worden weergegeven. | Weergave knoppen |
vbCritical | 16 | Het pictogram Belangrijk bericht wordt weergegeven. | Pictogramstijl |
vbQuestion | 32 | Het pictogram Waarschuwingsquery wordt weergegeven. | Pictogramstijl |
vbExclamation | 48 | Het pictogram Waarschuwingsbericht wordt weergegeven. | Pictogramstijl |
vbInformation | 64 | Het pictogram Informatief bericht wordt weergegeven. | Pictogramstijl |
vbDefaultButton1 | 0 | Eerste knop is standaard. | Standaardknop |
vbDefaultButton2 | 256 | Tweede knop is standaard. | Standaardknop |
vbDefaultButton3 | 512 | Derde knop is standaard. | Standaardknop |
vbDefaultButton4 | 768 | Vierde knop is standaard. | Standaardknop |
vbApplicationModal | 0 | Toepassing modaal. De gebruiker moet reageren op het berichtvenster voordat hij of zij verder kan werken in de huidige toepassing. | Modaliteit berichtvenster |
vbSystemModal | 4096 | Systeem modaal. Alle toepassingen worden opgeschort totdat de gebruiker reageert op het berichtvenster. | Modaliteit berichtvenster |
vbMsgBoxHelpButton | 16384 | De knop Help wordt toegevoegd aan het berichtvenster. | Overig |
VbMsgBoxSetForeground | 65536 | Het berichtvenster wordt gespecificeerd als het venster op de voorgrond. | Overig |
vbMsgBoxRight | 524288 | Tekst is rechts uitgelijnd. | Overig |
vbMsgBoxRtlReading | 1048576 | Hiermee 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:
Constante | Waarde | Beschrijving |
---|---|---|
vbOK | 1 | OK |
vbCancel | 2 | Annuleren |
vbAbort | 3 | Afbreken |
vbRetry | 4 | Opnieuw |
vbIgnore | 5 | Negeren |
vbYes | 6 | Ja |
vbNo | 7 | Nee |
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
Wat ik nog mis: als je veel info wilt meegeven in de msgbox kan je een break (tekst gaat verder op de volgende lijn) gebruiken, zo wordt het leesbaarder. 2 breaks geven een blanco lijn.
Msgbox “tekst deel 1” & vbCr & vbCr & “tekst deel 2”