如何輕鬆切換 Excel 2010 工作簿中所有工作表的分頁符號顯示?

如何輕鬆切換 Excel 2010 工作簿中所有工作表的分頁符號顯示?

Excel 2010 一次僅允許透過以下方式開啟或關閉一個工作表的分頁符檔案→選項→進階→“顯示此工作表的選項”:

在此輸入影像描述

我之前想出了一個 VBA 巨集來切換分頁符,但它僅適用於我活動的工作表:

Sub TogglePageBreaks()

    ActiveSheet.DisplayPageBreaks = Not ActiveSheet.DisplayPageBreaks

End Sub

下一個邏輯問題(其他人必須向我指出)是如何使用巨集來切換分頁符號顯示全部活動工作簿中的工作表?

作為 VBA 新手,我花了幾個小時研究如何循環工作表以及 DisplayPageBreaks 物件的工作原理。我在下面想出了一個答案。

答案1

這就是我能想到的。我在 Excel 2010 中成功測試了它。 ws.Activate是關鍵,因為DisplayPageBreaks僅適用於活動工作表。歸功於火箭驢的帖子讓我意識到這一點。也歸功於瑞克·羅斯坦對於我在答案中應用的美麗簡單的切換程式碼概念。


Sub ToggleWkBkPageBreaks()

    Dim ws As Worksheet

    For Each ws In ActiveWorkbook.Worksheets

        ws.Activate

        ActiveSheet.DisplayPageBreaks = True + False - ActiveSheet.DisplayPageBreaks

    Next ws

End Sub

答案2

這應該比你的例子更有效。
在執行幹擾視覺效果的操作(例如啟動工作表)時,停用螢幕更新是一個基本的良好實踐。此外,2013 不需要啟動工作表即可切換分頁符號。

所以...給你:

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

相關內容