Franklin에는 워크 시트의 일부 행을 숨기고 워크 시트를 인쇄하는 매크로가 있습니다. 이를 위해 그는 BeforePrint 이벤트 핸들러를 사용합니다. 문제는 프랭클린이 인쇄가 완료된 후 행을 자동으로 숨김 해제하려고한다는 것입니다. 그는 자신의 매크로 내에서이 작업을 수행하는 방법을 모릅니다.

이에 접근 할 수있는 몇 가지 방법이 있습니다. 하나는 BeforePrint 이벤트 처리기를 사용하여 원하는 행을 숨기고 OnTime 메서드를 통해 실행할 매크로를 지정하는 것입니다. 다음은 이벤트 핸들러의 모습입니다.

Private Sub Workbook_BeforePrint(Cancel As Boolean)

' Code here to hide rows desired

Application.OnTime Now, "AfterPrint"

End Sub

이 이벤트 처리기에 숨기려는 행을 숨기려면 코드를 추가해야합니다. (Franklin은 이러한 코드가 작동한다고 말했습니다. 인쇄 후 문제가있는 매크로를 숨김 해제했습니다.) OnTime을 통해 호출되는 매크로는 AfterPrint라는 매크로입니다. 이 매크로는 이벤트 핸들러가 배치 된 것과 동일한 모듈이 아닌 일반 모듈 내에 배치되어야합니다. 이벤트 핸들러보다 더 간단 할 수 있습니다.

Sub AfterPrint()

' Code here to unhide rows     Cells.Select     Selection.EntireRow.Hidden = False End Sub

원하는 경우 OnTime 메서드 (및 AfterPrint 매크로)에 대한 필요성을 완전히 건너 뛸 수도 있습니다. 여기에는 다음과 같은 접근 방식이 포함됩니다.

Private Sub Workbook_BeforePrint(Cancel As Boolean)

Cancel = True     ' Code here to hide rows desired

Application.EnableEvents = False     ActiveSheet.PrintOut     Application.EnableEvents = True

' Code here to unhide rows End Sub

매크로는 BeforePrint 이벤트를 트리거 한 인쇄를 취소하고 행을 숨기고 활성 워크 시트를 인쇄 한 다음 행 숨기기를 해제하기 때문에 작동합니다.

이러한 이벤트 처리기 기반 접근 방식의 단점은 사용자가 인쇄 할 수있는 항목을 제한한다는 것입니다. 즉, 사용자는 실제로 인쇄하려는 것이 아니라 사용자가 인쇄하도록 허용 한 것만 인쇄 할 수 있습니다. 이 다소 큰 제한을 극복하려면 BeforePrint 접근 방식을 완전히 포기해야합니다. 대신 인쇄를 처리하는 일반 매크로를 만드십시오.

Sub PrintWS()

' Code here to hide rows desired

Application.EnableEvents = False     ActiveSheet.PrintOut     Application.EnableEvents = True

' Code here to unhide rows End Sub

이것은 본질적으로 두 번째 BeforePrint 접근 방식의 기본입니다. 행을 숨기고 워크 시트를 인쇄 한 다음 행을 숨김 해제합니다. 이 PrintWS 매크로는 바로 가기 키 또는 빠른 실행 도구 모음의 항목에 연결되어 쉽게 호출 할 수 있습니다.

그런데 BeforePrint 접근 방식 중 하나를 사용하기로 결정한 경우 모든 버전의 Excel에서 제대로 작동하지 않는다는보고가있었습니다. (추적하기가 매우 어렵습니다.) 어떤 버전에서는 Excel에서 인쇄하는 내용이 BeforePrint 이벤트 처리기가 호출되기 전에 “바로 설정”됩니다. 즉, 워크 시트가 실제로 인쇄 될 때 이벤트 처리기 내에서 숨긴 모든 행이 무시되므로 마치 매크로에서 행을 숨기지 않은 것과 같습니다. 이 매우 실망스러운 사실을 해결하는 유일한 방법은 위의 두 번째 BeforePrint 예제 또는 PrintWS 매크로 접근 방식을 통해 직접 인쇄를 처리하는 것입니다.

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (13624)은 Office 365의 Microsoft Excel 2007, 2010, 2013, 2016, 2019 및 Excel에 적용됩니다.