Maak een berichtenvenster in VBA

© CIDimport

Maak een berichtenvenster in VBA

Geplaatst: 11 mei 2009 - 09:05

Aangepast: 27 augustus 2022 - 15:40

Redactie ID.nl

Op uw computer duikt regelmatig een venster op. Als u daarin klikt op Ja of Nee, gebeurt er iets. Zo'n berichtvenster programmeert u zelf door een macro te schrijven in de taal VBA (Visual Basic for Applications).

Op uw computer duikt regelmatig een venster op. Als u daarin klikt op Ja of Nee, gebeurt er iets. Zo'n berichtvenster programmeert u zelf door een macro te schrijven in de taal VBA (Visual Basic for Applications).

Stap 1

Maak een berichtenvenster in VBA-15985728

© CIDimport

Als voorbeeld nemen we een scorelijst in Excel. Als u de scores wilt wissen, verschijnt er eerst een venster met de vraag of u het zeker weet en pas na uw toestemming worden de scores gewist. We laten zien hoe u zo'n venster tevoorschijn tovert.

Als u een macro maakt door deze op te nemen, krijgt u vanzelf de VBAcode. Maar een macro voor een berichtvenster valt niet op te nemen, de code daarvoor moet u zelf schrijven. U maakt er ruimte voor in de vorm van een nieuwe module.

Start Excel met een blanco werkmap. Klik op Extra, Macro, Visual Basic Editor (of druk op Alt + F11). Klik in deze Editor op Beeld, Projectverkenner (Ctrl + R). Links verschijnt een mappenlijst. Kies de werkmap waarin u de procedure wilt bewaren. Deze code hoeft alleen in deze werkmap te werken, klik dus op VBA Project(Map1). Klik op Invoegen en kies Module. Rechts is een blanco codeblad verschenen en in de map Modules is Module1 erbij gekomen.

Stap 2

Maak een berichtenvenster in VBA-15985731

© CIDimport

Typ in het codeblad Sub MijnVenster (met alleen een spatie na Sub) en druk op Enter. VBA plaatst er automatisch twee haakjes achter en voegt de regel End Sub toe. Dit is het raamwerk voor uw procedure. Er staat nu:

Sub MijnVenster()

End Sub

Tussen deze beide regels typt u de instructies. Druk op de toets Tab, typ msgbox , typ een spatie en "Hallo allemaal!" of een andere boodschap (die moet tussen dubbele aanhalingstekens staan). Druk op de toets Pijl-omlaag en u ziet dat msgbox verandert in MsgBox, de officiële schrijfwijze. VBA heeft deze code herkend als een ingebouwde functie. Deze code staat voor Message Box en betekent Berichtvenster. Uw zelfgemaakte procedure ziet er nu uit als de afbeelding hiernaast.

U kunt deze procedure uitvoeren vanuit het codevenster. Plaats hiervoor de muisaanwijzer ergens binnen de code en klik op de knop met het driehoekje: Sub/UserForm uitvoeren; of druk op de toets F5. Het berichtvenster springt in beeld, met uw eigen tekst en in de stijl van Windows: een blauwe titelbalk met rechts een kruisje Sluiten en een knop OK (dit scherm ziet u in het bovenste gedeelte van de afbeelding hiernaast). En dat allemaal met één simpele regel code. Klik in dit venster op OK om het te sluiten.

Stap 3

Maak een berichtenvenster in VBA-15985734

© CIDimport

Als de code werkt, kunt u deze verder aanvullen. Voor een simpele mededeling is de knop OK voldoende. Maar moet de gebruiker op een vraag antwoorden, dan hebt u de knoppen Ja en Nee nodig. Typ daarom aan het eind van de regel met MsgBox een komma en vbYesNo. De gebruiker moet antwoord geven op een vraag, dus past u de tekst van het venster ook aan. Wijzig de zin in "Programmeren in VBA: is het moeilijk?" zodat het geheel er uitziet als de afbeelding hiernaast. Voer de procedure uit door weer op F5 te drukken.

Stap 4

Maak een berichtenvenster in VBA-15985736

© CIDimport

Afhankelijk van het antwoord moet er iets gebeuren. Stel, u houdt in Excel de scores van een spel bij in de cellen B2 tot en met D15. Met SOMformules worden de punten automatisch opgeteld zodat u de totalen ziet. Voor de volgende wedstrijd moeten de punten worden gewist, maar u wilt niet per ongeluk ook de formules wissen. Daarom bouwt u een veiligheid in: u laat een venster verschijnen met de vraag of u het zeker weet. Open de betreffende werkmap. Start de Visual Basic Editor, kies het VBA-Project met de naam van deze werkmap, voeg een nieuwe module in en typ de code uit afbeelding hiernaast over. (U vergroot die afbeelding tot leesproporties door erop te klikken).

Hier wordt het berichtvenster anders samengesteld, namelijk door eerst de kenmerken van de tekst en de knoppen vast te leggen in zogeheten variabelen, die wij voor de hand liggende namen gaven. In de variabele Tekst staat de vraag die in beeld komt, in de variabele Knoppen ziet u weer de code voor de knoppen Ja en Nee. Nu wordt het berichtvenster samengesteld door bij MgsBox deze kenmerken tussen haakjes op te geven.

Als dit venster verschijnt, kiest de gebruiker Ja of Nee en deze keuze wordt opgeslagen in de variabele Antwoord. Daarmee gaat vervolgens de regel met If aan de slag. If Antwoord = vbYes betekent: als de gebruiker op Ja heeft geklikt. Is dat het geval, dan wordt met Range("B2:D15").ClearContents het gebied B2 tot en met D15 gewist. Bij Nee gebeurt er niets. Hierna gaat de code naar de volgende regel, die in cel B2 parkeert, waar u weer begint met de nieuwe score.

Stap 5

Maak een berichtenvenster in VBA-15985738

© CIDimport

Standaard heeft de knop Ja het accent, de focus, zoals dat heet. De muisaanwijzer springt daar automatisch naartoe en de gebruiker hoeft alleen maar te klikken (of op Enter te drukken). Omdat het klikken op Ja riskant is (er worden gegevens gewist!), geeft u de knop Nee de focus, zodat de gebruiker bewust Ja moet kiezen. Hiervoor typt u na vbYesNo een plusteken en dan vbDefaultButton2.

Voer de procedure weer uit. U zult zien dat de knop Nee nu de focus heeft. Wie Ja kiest, moet bewust op de andere knop klikken (zie ook de afbeelding).

Om te laten zien dat het om een waarschuwing gaat, tuigt u het venster op met een gevarendriehoek. Typ hiervoor aan het eind van de regel Knoppen een plus-teken gevolgd door vbExclamation (typt u in plaats hier van vbCritical, dan verschijnt het stopteken). Al met al ziet uw zelfgeschreven macro eruit als de afbeelding hiernaast.

Tip: Knop in het werkblad plaatsen

Maak een berichtenvenster in VBA-15985741

© CIDimport

Om de macro in het werkblad uit te voeren, plaats u er als volgt een knop in: klik op de knop Tekenen, AutoVormen, Basisvormen en kies de rechthoek met schuine rand. Klik in het werkblad en sleep diagonaal, waarna de knop verschijnt. Klik erop met de rechtermuisknop, Tekst toevoegen en typ Scores wissen. Dubbelklik op de rand en maak de knop naar smaak op.

Om uw zelfgeschreven macro aan deze knop te koppelen, klikt u erop met de rechtermuisknop, kies Macro toewijzen, De macro ScoresWissen en klik op OK. U roept uw eigen venster voortaan op met een klik op uw eigen knop.

Gratis download

Het werkblad met de scores en de macro staat al voor u klaar. Klik hier om gratis het bestand CID ScoresWissen VBA.xls op te halen. U kunt er meteen mee aan de slag.

Deel dit artikel
Voeg toe aan favorieten