2009-09-03 3 views
4

Excel에서 Before_Print 이벤트를 가로 채기 위해 시트를 인쇄하기 전에 사용자가 필요한 모든 필드를 채웠는지 확인하는 코드가 있습니다. 그러나 사용자가 실제로 인쇄 중이면 인쇄 미리보기를 호출 할 때가 아니라이 코드를 실행하기 만하면됩니다.Excel에서 인쇄 및 인쇄 미리보기 이벤트의 차이점

Before_Print 코드에서 사용자가 실제로 인쇄 중이거나 미리보기 만하는지 여부를 알 수있는 방법이 있습니까? 나는 이벤트가 인쇄 미리보기 또는 인쇄 요청 여부를 결정하는 깔끔한 방법이라고 생각하지 않습니다

Private Sub Workbook_BeforePrint(Cancel As Boolean) 
    If Not Sheet2.CheckAllFieldsFilled Then 
     Cancel = True 
    End If 
End Sub 

답변

0

: 내가 현재 가지고

코드 (엑셀에 의해 생성 된 이벤트 스텁)입니다.

아래의 해결책은 특별히 깔끔하고 사용자에게 약간의 불편을주지 않지만 작동합니다.

코드는 이벤트를 취소 한 다음 사용자에게 응답을 기반으로 인쇄 미리보기 또는 인쇄물을 표시합니다.

Private Sub Workbook_BeforePrint(Cancel As Boolean) 

Dim Print_or_Preview As XlYesNoGuess 

Application.EnableEvents = False 

    Cancel = True 
    Print_or_Preview = MsgBox("Show Print Preview?", vbYesNo) 

    If Print_or_Preview = True Then 
     ActiveWindow.ActiveSheet.PrintPreview 
     Else 
     ActiveWindow.ActiveSheet.PrintOut 
    End If 
Application.EnableEvents = True 

End Sub 
0

인쇄 미리보기를 원할 때 밀어 내기 버튼이 제공됩니다.

는 (버튼의 옵션에서) 인쇄 버튼 숨기기를 확인하고 코드가 단순히 말 :에

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True 

:

ActiveWindow.ActiveSheet.PrintPreview 
0

당신이 이런 일을 할 수있는 인쇄하려면 제안 된대로 인쇄 미리보기 :

ActiveWindow.ActiveSheet.PrintPreview 

각기 다른 버튼이 필요하지만 eit 그녀의 방법은 미리보기 버튼이 인쇄 옵션에서 작동 할 수 있기 때문에 특히 두 가지가 모두 필요한지를 테스트하는 것이 좋습니다. 대부분의 경우 미리보기에서 바로 인쇄 할 수 있기 때문에 특히 그렇습니다.

내가 틀릴 수도 있지만 그렇게 생각하지 않습니다.

내가 게시 한 인쇄 옵션은 스크립트로 코드화 되었기 때문에 직접 인쇄 할 것이고 옵션을 요청하지 않을 것입니다. 인쇄 할 사본의 수를 변경하려면 copies:= 원하는 번호로 ...

Enjoy :)

관련 문제