Excel VBA MsgBox (Message Box) - Alles wat u moet weten!

In Excel VBA kunt u de functie MsgBox gebruiken om een ​​berichtvenster weer te geven (zoals hieronder weergegeven):

Een MsgBox is niets anders dan een dialoogvenster dat u kunt gebruiken om uw gebruikers te informeren door een aangepast bericht weer te geven of door basisinvoer te krijgen (zoals Ja/Nee of OK/Annuleren).

Terwijl het dialoogvenster MsgBox wordt weergegeven, wordt uw VBA-code stopgezet. U moet op een van de knoppen in de MsgBox klikken om de resterende VBA-code uit te voeren.

Opmerking: in deze zelfstudie zal ik de woorden berichtvenster en MsgBox door elkaar gebruiken. Wanneer u met Excel VBA werkt, moet u altijd Berichtenbox.

Anatomie van een VBA MsgBox in Excel

Een berichtvenster heeft de volgende onderdelen:

  1. Titel: Dit wordt meestal gebruikt om weer te geven waar het berichtvenster over gaat. Als u niets opgeeft, wordt de toepassingsnaam weergegeven, in dit geval Microsoft Excel.
  2. Snel: Dit is het bericht dat u wilt weergeven. U kunt deze ruimte gebruiken om een ​​paar regels te schrijven of hier zelfs tabellen/gegevens weer te geven.
  3. Toetsen): Hoewel OK de standaardknop is, kunt u deze aanpassen om knoppen weer te geven zoals Ja/Nee, Ja/Nee/Annuleren, Opnieuw proberen/Negeren, enz.
  4. Pictogram sluiten: U kunt het berichtvenster sluiten door op het sluitpictogram te klikken.

Syntaxis van de VBA MsgBox-functie

Zoals ik al zei, is MsgBox een functie en heeft het een syntaxis die vergelijkbaar is met andere VBA-functies.

MsgBox( prompt [, buttons ] [, title ] [, helpfile, context ] )

  • snel - Dit is een verplicht argument. Het geeft het bericht weer dat u in de MsgBox ziet. In ons voorbeeld is de tekst "Dit is een voorbeeld MsgBox" de 'prompt'. U kunt maximaal 1024 tekens in de prompt gebruiken en deze ook gebruiken om de waarden van variabelen weer te geven. Als u een prompt met meerdere regels wilt weergeven, kunt u dat ook doen (daarover later meer in deze tutorial).
  • [toetsen] - Het bepaalt welke knoppen en pictogrammen worden weergegeven in de MsgBox. Als ik bijvoorbeeld vbOkOnly gebruik, wordt alleen de knop OK weergegeven en als ik vbOKCancel gebruik, worden zowel de knoppen OK als Annuleren weergegeven. Ik zal later in deze tutorial verschillende soorten knoppen behandelen.
  • [titel] - Hier kunt u aangeven welk bijschrift u wilt in het berichtdialoogvenster. Dit wordt weergegeven in de titelbalk van de MsgBox. Als u niets opgeeft, wordt de naam van de toepassing weergegeven.
  • [helpbestand] - U kunt een helpbestand specificeren dat toegankelijk is wanneer een gebruiker op de Help-knop klikt. De help-knop verschijnt alleen als u de knopcode ervoor gebruikt. Als u een helpbestand gebruikt, moet u ook het contextargument opgeven.
  • [context] - Het is een numerieke uitdrukking die het Help-contextnummer is dat is toegewezen aan het juiste Help-onderwerp.

Als het concept van Msgbox nieuw voor u is, kunt u de argumenten [helpfile] en [context] negeren. Ik heb deze zelden zien worden gebruikt.

Opmerking: alle argumenten tussen vierkante haken zijn optioneel. Alleen het argument 'prompt' is verplicht.

Excel VBA MsgBox-knopconstanten (voorbeelden)

In dit gedeelte bespreek ik de verschillende soorten knoppen die u kunt gebruiken met een VBA MsgBox.

Voordat ik je de VBA-code ervoor laat zien en hoe de MsgBox eruitziet, is hier een tabel met alle verschillende knopconstanten die je kunt gebruiken.

Knop Constant Beschrijving
vbOKAlleen Toont alleen de OK-knop
vbOKAnnuleren Toont de knoppen OK en Annuleren
vbAbortRetryNegeren Toont de knoppen Afbreken, Opnieuw en Negeren
vbJaNee Toont de Ja en Nee knoppen
vbJaNeeAnnuleren Toont de knoppen Ja, Nee en Annuleren
vbOpnieuw proberenAnnuleren Toont de knoppen Opnieuw en Annuleren
vbMsgBoxHelpKnop Toont de Help-knop. Om dit te laten werken, moet u de help- en contextargumenten in de MsgBox-functie gebruiken
vbStandaardKnop1 Maakt de eerste knop standaard. U kunt het nummer wijzigen om de standaardknop te wijzigen. vbDefaultButton2 maakt bijvoorbeeld de tweede knop als standaard

Opmerking: bij het doornemen van de voorbeelden van het maken van verschillende knoppen, kun je je afvragen wat het nut van deze knoppen is als het geen invloed heeft op de code.

Het doet! Op basis van de selectie kunt u coderen wat u wilt dat de code doet. Als u bijvoorbeeld OK selecteert, moet de code doorgaan en als u op Annuleren klikt, moet de code stoppen. Dit kan door variabelen te gebruiken en de waarde van de Message Box aan een variabele toe te wijzen. We zullen dit in de latere secties van deze tutorial behandelen.

Laten we nu eens kijken naar enkele voorbeelden van hoe de verschillende knoppen in een MsgBox kunnen worden weergegeven en hoe deze eruitziet.

MsgBox-knoppen - alleen vbOKOnly (standaard)

Als u alleen de prompt gebruikt en geen van de argumenten opgeeft, krijgt u het standaardberichtvenster zoals hieronder weergegeven:

Hieronder staat de code die dit berichtvenster geeft:

Sub DefaultMsgBox() MsgBox "Dit is een voorbeelddoos" End Sub

Merk op dat de tekenreeks tussen dubbele aanhalingstekens moet staan.

U kunt ook de knopconstante vbOKOnly gebruiken, maar zelfs als u niets opgeeft, wordt dit als standaard genomen.

MsgBox-knoppen - OK & Annuleren

Als u alleen de knop OK en de knop Annuleren wilt weergeven, moet u de constante vbOKCancel gebruiken.

Sub MsgBoxOKCancel() MsgBox "Wilt u doorgaan?", vbOKCancel End Sub

MsgBox-knoppen - Afbreken, opnieuw proberen en negeren

U kunt de constante 'vbAbortRetryIgnore' gebruiken om de knoppen Abort, Retry en Ignore weer te geven.

Sub MsgBoxAbortRetryIgnore() MsgBox "Wat wilt u doen?", vbAbortRetryIgnore End Sub

MsgBox-knoppen - Ja en Nee

U kunt de constante ‘vbYesNo’ gebruiken om de Ja- en Nee-knoppen weer te geven.

Sub MsgBoxYesNo() MsgBox "Moeten we stoppen?", vbYesNo End Sub

MsgBox-knoppen - Ja, Nee en Annuleren

U kunt de constante 'vbYesNoCancel' gebruiken om de knoppen Ja, Nee en Annuleren weer te geven.

Sub MsgBoxYesNoCancel() MsgBox "Moeten we stoppen?", vbYesNoCancel End Sub

MsgBox-knoppen - Opnieuw proberen en annuleren

U kunt de constante 'vbRetryCancel' gebruiken om de knoppen Opnieuw en Annuleren weer te geven.

Sub MsgBoxRetryCancel() MsgBox "Wat wilt u nu doen?", vbRetryCancel End Sub

MsgBox-knoppen - Help-knop

U kunt de constante 'vbMsgBoxHelpButton' gebruiken om de help-knop weer te geven. U kunt het gebruiken met andere knopconstanten.

Sub MsgBoxRetryHelp() MsgBox "Wat wilt u nu doen?", vbRetryCancel + vbMsgBoxHelpButton End Sub

Merk op dat we in deze code twee verschillende knopconstanten hebben gecombineerd (vbRetryCancel + vbMsgBoxHelpButton). Het eerste deel toont de knoppen Opnieuw en Annuleren en het tweede deel toont de knop Help.

MsgBox-knoppen - Een standaardknop instellen

U kunt de constante 'vbDefaultButton1' gebruiken om de eerste knop als standaard in te stellen. Dit betekent dat de knop al is geselecteerd en als u op enter drukt, wordt die knop uitgevoerd.

Hieronder staat de code waarmee de tweede knop (de 'Nee'-knop) als standaard wordt ingesteld.

Sub MsgBoxOKCancel() MsgBox "Wat wilt u nu doen?", vbYesNoCancel + vbDefaultButton2 End Sub

In de meeste gevallen is de meest linkse knop de standaardknop. U kunt andere knoppen kiezen met vbDefaultButton2, vbDefaultButton3 en vbDefaultButton4.

Excel VBA MsgBox-pictogramconstanten (voorbeelden)

Afgezien van de knoppen, kunt u ook de pictogrammen aanpassen die worden weergegeven in het dialoogvenster MsgBox. U kunt bijvoorbeeld een rood kritiek pictogram of een blauw informatiepictogram hebben.

Hieronder staat een tabel met de code die het bijbehorende pictogram zal tonen.

Icoon Constant Beschrijving
vbKritiek Toont het pictogram voor kritieke berichten
vbVraag Toont het vraagpictogram
vbUitroepteken Toont het waarschuwingsberichtpictogram
vbInformatie Toont het informatiepictogram

MsgBox-pictogrammen - kritiek

Als u een kritiek pictogram in uw MsgBox wilt weergeven, gebruikt u de vbCritical-constante. U kunt dit samen met andere knopconstanten gebruiken (door een + teken tussen de codes te plaatsen).

Hieronder staat bijvoorbeeld een code die de standaard OK-knop toont met een kritiek pictogram.

Sub MsgBoxCriticalIcon() MsgBox "Dit is een voorbeelddoos", vbCritical End Sub

Als u het kritieke pictogram wilt weergeven met de knoppen Ja en Nee, gebruik dan de volgende code:

Sub MsgBoxCriticalIcon() MsgBox "Dit is een voorbeelddoos", vbYesNo + vbCritical End Sub

MsgBox-pictogrammen - Vraag

Als u een kritiek pictogram in uw MsgBox wilt weergeven, gebruikt u de vbQuestion-constante.

Sub MsgBoxQuestionIcon() MsgBox "Dit is een voorbeelddoos", vbYesNo + vbQuestion End Sub

MsgBox-pictogrammen - Uitroepteken

Als u een uitroepteken in uw MsgBox wilt weergeven, gebruikt u de vbExclamation-constante.

Sub MsgBoxExclamationIcon() MsgBox "Dit is een voorbeelddoos", vbYesNo + vbExclamation End Sub

MsgBox-pictogrammen - Informatie

Als u een informatiepictogram in uw MsgBox wilt weergeven, gebruikt u de vbInformation-constante.

Sub MsgBoxInformationIcon() MsgBox "Dit is een voorbeelddoos", vbYesNo + vbInformation End Sub

Titel en prompt in de MsgBox aanpassen

Wanneer u MsgBox gebruikt, kunt u de titel en de promptberichten aanpassen.

Tot nu toe hebben we in het voorbeeld dat we hebben gezien Microsoft Excel als titel gebruikt. Als u het titelargument niet opgeeft, gebruikt MsgBox automatisch de titel van de toepassing (in dit geval Microsoft Excel).

U kunt de titel aanpassen door deze in de onderstaande code op te geven:

Sub MsgBoxInformationIcon() MsgBox "Wilt u doorgaan?", vbYesNo + vbQuestion, "Stap 1 van 3" End Sub

Op dezelfde manier kunt u ook het promptbericht aanpassen.

U kunt ook regeleinden toevoegen in het promptbericht.

In de onderstaande code heb ik een regeleinde toegevoegd met 'vbNewLine'.

Sub MsgBoxInformationIcon() MsgBox "Wilt u doorgaan?" & vbNewLine & "Klik Ja om door te gaan", vbYesNo + vbQuestion, "Stap 1 van 3" End Sub

U kunt ook het regelterugloopteken - Chr(13) - of regelinvoer - Chr(10) gebruiken om een ​​nieuwe regel in het promptbericht in te voegen.

Merk op dat u alleen een nieuwe regel aan het promptbericht kunt toevoegen en niet aan de titel.

MsgBox-waarde toewijzen aan een variabele

Tot nu toe hebben we de voorbeelden gezien waarin we berichtvakken hebben gemaakt en de knoppen, pictogrammen, titel en prompt hebben aangepast.

Het klikken op een knop heeft echter niets opgeleverd.

Met de MsgBox-functie in Excel kunt u beslissen wat u wilt doen wanneer een gebruiker op een specifieke knop klikt. En dit is mogelijk omdat aan elke knop een waarde is gekoppeld.

Dus als ik op de knop Ja klik, retourneert de functie MsgBox een waarde (6 of de constante vbYes) die ik in mijn code kan gebruiken. Evenzo, als de gebruiker de knop Nee selecteert, wordt een andere waarde geretourneerd ((7 of de constante vbNo)) die ik in de code kan gebruiken.

Hieronder staat een tabel met de exacte waarden en de constante die wordt geretourneerd door de functie MsgBox. U hoeft deze niet te onthouden, wees u er gewoon van bewust en u kunt de constanten gebruiken die gemakkelijker te gebruiken zijn.

Knop geklikt Constante Waarde
OK vbOk 1
Annuleren vbAnnuleren 2
Afbreken vbAfbreken 3
Opnieuw proberen vbOpnieuw proberen 4
Negeren vbNegeren 5
Ja vbJa 6
Nee vbNee 7

Laten we nu eens kijken hoe we de VBA-macrocode kunnen besturen op basis van op welke knop een gebruiker klikt.

Als de gebruiker in de onderstaande code op Ja klikt, wordt het bericht "Je hebt op Ja geklikt" weergegeven en als de gebruiker op Nee klikt, wordt weergegeven: "Je hebt op Nee geklikt".

Sub MsgBoxInformationIcon() Resultaat = MsgBox("Wilt u doorgaan?", vbYesNo + vbQuestion) If Result = vbYes Dan MsgBox "Je hebt op Ja geklikt" Anders: MsgBox "Je hebt op Nee geklikt" End If End Sub

In de bovenstaande code heb ik de waarde van de functie MsgBox toegewezen aan de variabele Resultaat. Wanneer u op de knop Ja klikt, krijgt de variabele Resultaat de constante vbYes (of het getal 6) en wanneer u op Nee klikt, krijgt de variabele Resultaat de constante vbNo (of het getal 7).

Vervolgens gebruikte ik een If Then Else-constructie om te controleren of de Result-variabele de waarde vbYes bevat. Als dit het geval is, wordt de prompt "Je hebt op Ja geklikt" weergegeven, anders wordt weergegeven "Je hebt op Nee geklikt".

U kunt hetzelfde concept gebruiken om een ​​code uit te voeren als een gebruiker op Ja klikt en de sub te verlaten wanneer hij/zij op Nee klikt.

Opmerking: wanneer u de MsgBox-uitvoer aan een variabele toewijst, moet u de argumenten van de MsgBox-functie tussen haakjes plaatsen. Bijvoorbeeld in de lijn Resultaat = MsgBox ("Wilt u doorgaan?", vbYesNo + vbQuestion), kunt u zien dat de argumenten tussen haakjes staan.

Als u verder wilt ingaan op de functie Berichtenbox, vindt u hier het officiële document.

Misschien vind je de volgende Excel VBA-zelfstudies misschien ook leuk:

  • Excel VBA Split-functie.
  • Excel VBA InStr-functie.
  • Werken met cellen en bereiken in Excel VBA.
  • Werken met werkbladen in VBA.
  • Werken met werkmappen in VBA.
  • Loops gebruiken in Excel VBA.
  • Excel VBA-gegevenstypen begrijpen (variabelen en constanten)
  • Hoe een persoonlijke macrowerkmap in Excel te maken en te gebruiken
  • Handige Excel-macrocodevoorbeelden.
  • Voor volgende lus gebruiken in Excel VBA.
  • Excel VBA-evenementen - Een eenvoudige (en complete) gids.
  • Een macro uitvoeren in Excel - een complete stapsgewijze handleiding.
  • Een Excel-invoegtoepassing maken en gebruiken

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave