BeforePrint hændelsen i Excel

Excel har en lang række hændelser, som kan anvendes til at "trigge" en kode. Hændelserne kan ske på ark, celler, knapper og hele projektmapper. Det sidste gælder fx hændelsen Workbook_BeforePrint. Ved hjælp af denne hændelse, kan man få udført kode, enden Excel udskriver noget, og det sker automatisk ved klik p printikonet, eller en af de øvrige udskriftsmetoder i Excel.

Af og til vil man dog også gerne kunne gøre noget, når Excel er færdig med at udskrive, og her vil man så få problemer, da der ikke eksisterer en AfterPrint hændelse. Man kan dog komme langt med BeforePrint hændelsen i stedet. Nedenstående kode kan anvendes:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    With ActiveSheet
        Application.EnableEvents = False
       
'Din kode før udskrift her
        ActiveWindow.SelectedSheets.PrintOut Copies:=1
       
'Din kode efter udskrift her.

        Cancel = True
        Application.EnableEvents = True
    End With
End Sub

 

Et eksempel i praksis. Denne kode forudsætter, at regnearket har en farvet baggrund i celle A1. Denne baggrundsfarve skal fjernes før udskrift, og sættes igen efter.

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    colo = Range("A1").Interior.ColorIndex
    Application.ScreenUpdating = False
    With ActiveSheet
        Application.EnableEvents = False
        Range("A1").Interior.ColorIndex = xlNone
        ActiveWindow.SelectedSheets.PrintOut Copies:=1
        Range("A1").Interior.ColorIndex = colo
        Cancel = True
        Application.EnableEvents = True
    End With
    Application.ScreenUpdating = True
End Sub

Forklaring:

  1. Den første linje aflæser farven i A! og gemmer den i en variabel.
  2. Skærmopdatering slås fra, så fjernelse og sætning af farve ikke ses på skærmen.
  3. I det aktive ark slås hændelser fra, så et print ikke udføres. Et klik på printikon eller Filer - Udskriv udløser altså    ingen udskrift.
  4. Farven fjernes.
  5. Arket udskrives (da udskrivningen er fjernet tidligere, må koden selv sikre, at der udskrives, her i en kopi, men  denne indstilling, såvel som andre indstillinger kan styres i denne linje kode.
  6. Farven sættes tilbage til den oprindelige.
  7. Cancel sætters til Sand, så der ikke udskrives igen.
    Hændelserne retableres.
  8. Skærmopdatering sættes tilbage til standard.

I næste eksempel fjernes farven fra alle celler i regnearket (kun celler, der indeholder formler er farvede). Derefter udskrives, og celler med formler farves igen blå.

Private Sub Workbook_BeforePrint(Cancel As Boolean)
' Fjerner farver fra alle celler inden udskrift.
' Udskriver arket i et antal eksemplarer, der specificeres i dialogboks
' Genfarver celler, der indeholder formler

    Application.ScreenUpdating = False
    Number = InputBox("Indtast antal eksempmlarer", "Udskriv farveløs")
    With ActiveSheet
        Application.EnableEvents = False
        ActiveSheet.UsedRange.Interior.ColorIndex = xlNone
        ActiveWindow.SelectedSheets.PrintOut Copies:=Number
        For Each c In ActiveSheet.UsedRange.Cells
            If c.HasFormula Then
                c.Interior.ColorIndex = 5
            End If
        Next c
        Cancel = True
        Application.EnableEvents = True
    End With
    Application.ScreenUpdating = True
End Sub

En makro, der kan farve alle celler med formler blå, kan ses under Småmakroer.

- Til top -
- Tilbage til makroer -

- Tilbage til Excel -