Wie kann ich die Anzeige von Seitenumbrüchen für alle Arbeitsblätter in einer Excel 2010-Arbeitsmappe einfach umschalten?

Wie kann ich die Anzeige von Seitenumbrüchen für alle Arbeitsblätter in einer Excel 2010-Arbeitsmappe einfach umschalten?

Excel 2010 erlaubt das Ein- und Ausschalten von Seitenumbrüchen nur für jeweils ein Arbeitsblatt überDatei → Optionen → Erweitert → „Anzeigeoptionen für dieses Arbeitsblatt“:

Bildbeschreibung hier eingeben

Ich habe mir zuvor ein VBA-Makro zum Umschalten von Seitenumbrüchen ausgedacht, aber es funktioniert nur auf dem Blatt, das ich aktiv habe:

Sub TogglePageBreaks()

    ActiveSheet.DisplayPageBreaks = Not ActiveSheet.DisplayPageBreaks

End Sub

Die nächste logische Frage (die mir jemand anderes stellen musste) ist, wie ich ein Makro verwende, um die Anzeige von Seitenumbrüchen umzuschalten füralleArbeitsblätter in der aktiven Arbeitsmappe?

Da ich neu bei VBA bin, habe ich ein paar Stunden damit verbracht, zu recherchieren, wie man durch Arbeitsblätter schleift und wie das DisplayPageBreaks-Objekt funktioniert. Die folgende Antwort habe ich gefunden.

Antwort1

Hier ist, was ich mir ausgedacht habe. Ich habe es erfolgreich in Excel 2010 getestet. Ich bin ein Neuling in VBA, also hatte ich eine Weile Probleme damit. ws.Activatewar der Schlüssel, da DisplayPageBreakses nur auf das aktive Blatt angewendet wird. Dank anBeitrag von RocketDonkeydafür, dass ich das erkannt habe. Dank auch anRick Rothsteinfür das wunderbar einfache Umschaltcode-Konzept, das ich in meiner Antwort angewendet habe.


Sub ToggleWkBkPageBreaks()

    Dim ws As Worksheet

    For Each ws In ActiveWorkbook.Worksheets

        ws.Activate

        ActiveSheet.DisplayPageBreaks = True + False - ActiveSheet.DisplayPageBreaks

    Next ws

End Sub

Antwort2

Dies sollte effizienter sein als Ihr Beispiel.
Das Deaktivieren der Bildschirmaktualisierung ist eine grundlegende bewährte Vorgehensweise, wenn Sie Dinge tun, die die visuellen Elemente beeinträchtigen (z. B. das Aktivieren von Blättern). Außerdem ist in 2013 keine Blattaktivierung erforderlich, um Seitenumbrüche umzuschalten.

Also... hier bitte:

Sub ToggleWkBkPageBreaks() ' start of public sub (private sub and function would not appear in macro menu in excel, would only be accessible to the code in the module)
    'Declaring variables
    Dim ws           As Worksheet 'worksheet object 
    Dim is2010OrLess As Boolean   'true or false variable (= type 'boolean')

    is2010OrLess = cint(Application.Version) > 15 ' check version (version "15.0" = excel 2013)
    Application.ScreenUpdating = False ' disable screen updating

    'do operations with ScreenUpdating turned off
    For Each ws In ThisWorkbook.Worksheets ' loop start (for each type, based on the sheet collection, hence the need for the ws object for the loop)
        If is2010OrLess = True then ws.Activate ' if version is less than exce3l2013, activate sheet. Else, don't activate the sheet (because it's unnecessary).
        ws.DisplayPageBreaks = not ws.DisplayPageBreaks ' .dysplayPagebreaks yelds a true or false so, we change it to ('=') the inverse (not true/not false)
    Next ws ' next sheet
    Application.ScreenUpdating = True ' Re-enable screen updating
End Sub

verwandte Informationen