Think before you ink

Voorbeeldbestanden bij dit artikel:
  • Think before you ink
  • Inleiding

    Na een tijdje windstilte op de site wat betreft Excel, is er hier weer een nieuwe pagina met VBA-code. Enkele weken terug was er een interessante vraag op Helpmij: hier zo. Om ook eens aan het milieu te denken, wilde de vraagsteller graag meewerken aan het tegengaan van papierverspilling. Hij / zij wilde weten hoe je automatisch een popup op het scherm kan krijgen op het moment (net voor) dat je iets afprint. Daar zou er dan de mogelijkheid moeten zijn om te stoppen met printen, of door te gaan (en voor eeuwig problemen hebben met je geweten…)

    Simpel en milieubewust

    Het bestandje hierboven bevat code die ik schreef. Hier volgt wat uitleg:

    Het detecteren van een printopdracht gebeurt via een Workbook_BeforePrint gebeurtenis in VBA. Die code plaats je in ThisWorkbook.

    Private Sub Workbook_BeforePrint(Cancel As Boolean)
    ' Wim Gielis ' http://www.wimgielis.com
    ''''' ' Be wise and print only necessary things
    ' 28/11/08 '''''
    frmThinkBeforeYouInk.Show Cancel = blnStoppenMetPrinten
    End Sub

    Veel gebeurt er niet in dit event. Eerst wordt er een userform opgeroepen, het schermpje dat hierboven afgebeeld staat en dat de gebruiker te zien krijgt. Daarna klikt de gebruiker op Stoppen (liefst) of Doorgaan. Aangezien het printen (ja of neen) afhangt van deze keuze, moeten we het antwoord van de gebruiker in een publieke variabele bijhouden. Die variabele heet bij mij blnStoppenMetPrinten en bevat True (om te stoppen met printen), of False (om door te gaan met printen). Een publieke variabele moet je declareren in een gewone Module in VBA, niet in een module van een werkblad, een userform, in ThisWorkbook, of in een klassemodule.

    Public blnStoppenMetPrinten As Boolean

    Die variabele wordt gevuld met behulp van de Click events van de knoppen op de userform.

    Private Sub cmdDoorgaan_Click()
    blnStoppenMetPrinten = False Unload Me
    End Sub
    Private Sub cmdStoppen_Click()
    blnStoppenMetPrinten = True Unload Me
    End Sub

    Aldus, klikken op Stoppen of Doorgaan brengt een True of een False in de variabele blnStoppenMetPrinten. Het Cancel argument leest die waarde uit en neemt over. Als Cancel True is, wordt het printen gestopt (gecanceld m.a.w.), als Cancel False is, wordt het printen niet gestopt. Dit is wat we nodig hadden.

    De volgende keer dat je iets afdrukt: graag aan het milieu denken!




    Over Wim

    Wim Gielis is Business Intelligence consultant en Excel expert

    Andere links