Neuer Code
Hi Manfred,
ich habe jetzt mal die beiden Routinen zusammengebaut und einen Druckauftrag dazwischen geschoben.
Dieser Code muss in den Codebereich von „DieseArbeitsmappe“:
Option Explicit
Private Sub Workbook\_BeforePrint(Cancel As Boolean)
Cancel = True
SW\_Druck
End Sub
Und dieser Code muss in ein Standardmodul:
Option Explicit
Option Base 1
Sub SW\_Druck()
Dim zelle As Range
Dim i As Long, dB As Long
Dim druckBereiche As Variant
Dim adresse As Variant
' Farbe ausschalten:
i = 0
druckBereiche = Split(ActiveSheet.PageSetup.PrintArea, ";")
ReDim adresse(1)
For dB = 0 To UBound(druckBereiche)
For Each zelle In Range(druckBereiche(dB))
If zelle.Interior.ColorIndex = 15 Then
i = i + 1
ReDim Preserve adresse(i)
adresse(i) = zelle.Address
zelle.Interior.ColorIndex = xlNone
End If
Next zelle
Next dB
' Druckfenster:
Application.EnableEvents = False
Application.Dialogs(xlDialogPrint).Show
Application.EnableEvents = True
' Farbe wieder an:
For i = 1 To UBound(adresse)
Range(adresse(i)).Interior.ColorIndex = 15
Next i
End Sub
Das Drucken kannst du jetzt ganz normal über das Menü, den Druckbutton oder Strg-P starten.
Wie heute Morgen geschrieben: Der Druckbereich kann auch aus mehreren Zellenbereichen bestehen. Der Makro kommt damit zurecht. Allerdings wird bisher noch jeder Zellenbereich auf ein eigenes Blatt gedruckt.
Du müsstest mal etwas genauer erzählen, wie die Druckbereiche bei dir aussehen und wo sie auf das Blatt gedruckt werden sollen. Dann könnte man den Makro so erweitern, dass er die Bereiche auf einem Blatt zusammenfasst, so sie denn passen.
Gruß, Andreas