Excel Conditional Content / Formatierung für Print vs. Bildschirm und Seitenumbrüche
-
19-09-2019 - |
Frage
Ich habe ein VBA veröffentlichen Makros in Excel einen veröffentlichten Arbeitsmappe erzeugt basierend auf einer Master-Konfigurations Arbeitsblatt und eine Reihe von Arbeitsblatt mit den Daten. Die veröffentlichte Version ist gerade Daten, noch formatierten, aber ohne Formeln und mit bestimmten Notizen und Hintergrundinformationen unterdrückt. Grundsätzlich ist die Master-Konfiguration enthält eine Tabelle von Arbeitsblatt-Namen und Bereichen veröffentlicht werden.
Um die veröffentlichte Version druckbar zu machen, einige der Arbeitsblätter benötigen eingefügt Seitenumbrüche. Ich weiß, ich diese auf der Grundlage der gleichen Konfiguration einfügen können, und ich kann auch die Druckausrichtung und Ränder eines bestimmten Arbeitsblatt ändern, indem Sie ein paar mehr Spalten zu meinem Stammblatt hinzufügen.
Hier kommt der schwierige Bit. Wenn eine Tabelle während des Veröffentlichungsprozesses eingefügt einige dieser Seitenumbrüche hat, möchte ich eine Informationsreihe vor dem Seitenumbruch eingefügt wird, die angibt, dass die Tabelle auf der nächsten Seite fortgesetzt wird. Aber ich will nur diese in der gedruckten Version zeigen, angezeigt nicht in dem On-Screen-Display.
Gibt es eine Möglichkeit, dies zu tun?
Lösung
Zuerst legen Sie eine Zeile und versteckt es kurz vor dem Seitenumbruch. Dann können Sie das BeforePrint
Ereignis auf der Arbeitsmappe alle finden Zeilen mit dem „nächste Seite“ Text darin und sichtbar machen sie dann.
Sub Workbook_BeforePrint(cancel as Boolean)
Dim rngCell as Range
set rngCell = ActiveSheet.UsedRange.Find("See Next Page")
while not rngCell is Nothing
if not rngCell is Nothing then
rngCell.EntireRow.Hidden = false
end if
set rngCell = ActiveSheet.UsedRange.FindNext()
loop
End Sub
Dies wird Ihnen etwas waren Sie gehen müssen, aber es wird Sie verlassen anfällig für die Frage der Tatsache, dass es keine AfterPrint
ist. Also, was Sie tun können, ist die folgende:
Sub Workbook_BeforePrint(cancel as Boolean)
Application.EnableEvents = false
'Unhide rows here
if cancel then
Workbook.PrintPreview()
else
Workbook.PrintOut()
end if
'Rehide rows here
Application.EnableEvents = True
End Sub
Beachten Sie, dass cancel
werden Ihnen im Wesentlichen sagen, ob seine eine Druckvorschau oder ein tatsächlicher Druckbefehl. Es ist sehr Art davon, glaube ich.