Excel 2010 통합 문서의 모든 워크시트에 대한 페이지 나누기 표시를 쉽게 전환하려면 어떻게 해야 합니까?

Excel 2010 통합 문서의 모든 워크시트에 대한 페이지 나누기 표시를 쉽게 전환하려면 어떻게 해야 합니까?

Excel 2010에서는 다음을 통해 한 번에 하나의 워크시트에 대해서만 페이지 나누기를 끄거나 켤 수 있습니다.파일 → 옵션 → 고급 → "이 워크시트의 표시 옵션":

여기에 이미지 설명을 입력하세요

이전에 페이지 나누기를 전환하기 위해 VBA 매크로를 생각해 냈지만 활성화된 시트에서만 작동합니다.

Sub TogglePageBreaks()

    ActiveSheet.DisplayPageBreaks = Not ActiveSheet.DisplayPageBreaks

End Sub

다음 논리적 질문(다른 사람이 나에게 지적해야 함)은 매크로를 사용하여 페이지 나누기 표시를 전환하는 방법입니다.모두활성 통합 문서의 워크시트?

VBA를 처음 접했기 때문에 워크시트를 반복하는 방법과 DisplayPageBreaks 개체가 작동하는 방법을 조사하는 데 몇 시간을 보냈습니다. 나는 아래에 답을 생각해 냈습니다.

답변1

내가 생각해 낼 수 있었던 것은 다음과 같습니다. Excel 2010에서 성공적으로 테스트했습니다. 저는 VBA를 처음 접했기 때문에 한동안 이 문제로 어려움을 겪었습니다. 활성 시트에만 적용되므로 ws.Activate핵심이었습니다 . DisplayPageBreaks신용RocketDonkey의 게시물그걸 깨닫게 해주셔서. 신용도릭 로스스타인내 답변에 적용한 아름답고 간단한 토글 코드 개념에 대해 설명합니다.


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

관련 정보