Microsoft Excel

Herbers Excel/VBA-Archiv

Druckbereich festlegen | Herbers Excel-Forum


Betrifft: Druckbereich festlegen von: bernie
Geschrieben am: 19.12.2009 20:05:24

Hallo Provies,

Ich habe in einer Tabelle C1-O248 als Druckbereich definiert und diese unterteilt

Sub Druckbereich()


'Druckbereiche aufheben
ActiveSheet.PageSetup.PrintArea = ""
    With ActiveSheet.PageSetup
        .PrintTitleRows = "$3:$8"
        .PrintTitleColumns = ""
    End With
    
'Druckbereich festlegen    
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = "- &P -"
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.393700787401575)
        .RightMargin = Application.InchesToPoints(0.078740157480315)
        .TopMargin = Application.InchesToPoints(0.393700787401575)
        .BottomMargin = Application.InchesToPoints(0.393700787401575)
        .HeaderMargin = Application.InchesToPoints(0.511811023622047)
        .FooterMargin = Application.InchesToPoints(0.511811023622047)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 95
        .PrintArea = "$C$1:$O$68,$C$69:$O$134,$C$135:$O$201,$C$202:$O$248"
        .PrintErrors = xlPrintErrorsDisplayed
    End With
End Sub

Nur das funktioniert so leider nicht.
Hat jemand eine Idee, wie ich den Druckbereich auch einer Seite so unterteilen kann, dass er auch beim erneuten öffnen der Tabelle so bleibt?
Gehe ich nämlich auf Seitenansicht bekomme ich nach erneutem Öffnen der Tabelle in der Seitenansicht C1-O74 angezeigt, anstatt c1-O68.

Vielleicht kann mir da jemand helfen.

Bernie

  

Betrifft: AW: Druckbereich festlegen von: Nepumuk
Geschrieben am: 20.12.2009 10:29:06

Hallo Bernie,

ruf doch das Makro zum festlegen des Druckbereiches einfach im Workbook_BeforePrint - Ereignis auf. Das reagiert sowohl auf drucken wie auf anzeigen der Seitenansicht. Wenn sich das Festlegen nur auf eine Tabelle bezieht, musst du natürlich eine Abfrage einbauen, damit nicht die anderen Blätter auch so ausgedruckt werden. Außerdem würde ich noch eine Abfrage einbauen, ob die Prozedur schon mal gelaufen ist, um zu vermeiden, dass das ganze mehrfach läuft. Druckbereich festlegen ist nicht gerade sehr schnell und wir wollen doch den User nicht ärgern indem er lange warten muss. Beispiel:

' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Static sblnProc_Run As Boolean
    'Tabelle1 ist der Objektname (im Projektexplorer links)
    If ActiveSheet Is Tabelle1 Then
        If Not sblnProc_Run Then Call Druckbereich
        sblnProc_Run = True
    End If
End Sub

Vorweihnachtliche Grüße
Nepumuk


  

Betrifft: AW: Druckbereich festlegen von: bernie
Geschrieben am: 23.12.2009 11:06:16

Hallo Nepumuk,

Danke für Deine Hilfe. Leider komme ich damit als VBA-Anfänger gar nicht klar.
Wenn Du Zeit und Lust hast, könntest Du mir den Weg zeigen?
Ich habe 12 Arbeitsblätter (Monate) und möchte die für den Ausdruck so aufbereiten, dass der Druckbereich immer

.PrintArea = "$C$1:$O$68,$C$69:$O$134,$C$135:$O$201,$C$202:$O$248"

ist.

Viele Grüsse und vorab ein schönes Fest

Bernie


  

Betrifft: AW: Druckbereich festlegen von: Tino
Geschrieben am: 23.12.2009 20:30:08

Hallo,
versuche es mal mit diesen Code, den kannst Du einem Butten zuweisen.

Sub PrintBereiche()
Dim meArSheets, i%

'hier Deine Tabellen entsprechen dem Muster einbauen. 
meArSheets = Array( _
"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember")


For i = Lbound(meArSheets) To Ubound(meArSheets)
    ThisWorkbook.Sheets(meArSheets(i)).PageSetup.PrintArea = _
    "$C$1:$O$68,$C$69:$O$134,$C$135:$O$201,$C$202:$O$248"
Next i

End Sub
Gruß Tino


  

Betrifft: AW: Druckbereich festlegen von: bernie
Geschrieben am: 24.12.2009 11:53:25

Hallo Tino,

leider funktioniert das auch nur bedingt.
Ich habe zwar in einigen Tabellen jetzt korrekt die Druckbereich, aber nicht bei allen.
Ist mir ein Rätsel.
Habe zwar schon probiert, zunächt alle Druckbereiche aufzuheben und dann neu aufzubauen - Ergebnis wie gehabt.
Ich habe das ganze in Auto_Open() integriert - läuft bis auf den Druckbereich gut.

Trotzdem ein frohes Fest und vielen Dank für Deine Hilfe

Bernie


  

Betrifft: AW: Druckbereich festlegen von: Tino
Geschrieben am: 24.12.2009 12:50:05

Hallo,
bei mir funzt es.

https://www.herber.de/bbs/user/66815.xls

Gruß Tino


Beiträge aus den Excel-Beispielen zum Thema "Druckbereich festlegen"