| |
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:
- Den
første linje aflæser farven i A! og gemmer den i en variabel.
-
Skærmopdatering slås fra, så fjernelse og sætning af farve ikke ses på
skærmen.
- 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.
- Farven
fjernes.
- 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.
- Farven
sættes tilbage til den oprindelige.
- Cancel
sætters til Sand, så der ikke udskrives igen.
Hændelserne retableres.
-
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 -
|