• ベストアンサー

Excel2000 BeforePrintイベントで印刷かプレビューかの判定

いつもお世話になっております。 Excel2000を使用しております。 Workbook_BeforePrintイベント内で処理を行っております。 印刷ボタン押下時と、プレビューボタン押下時とで 処理を分岐させたいのですが、 どちらが実行されたのか判定する方法がどうしてもわかりませんでした。 ご教授いただけましたら幸いです。 何卒よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

#1のコードが二箇所間違っていましたので、訂正します。 Sub Auto_Open() 'ThisWorkbook_Open イベントでも可能  Call NewBtnSetting 'End If  ←間違いです。 End Sub Class モジュール Private WithEvents NewBtn As Office.CommandBarButton Public Property Set myNewBtn(ByVal myBtn As CommandBarButton)  Set NewBtn = myBtn End Property Private Sub NewBtn_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)  'MsgBox Ctrl.Caption & "が押されました" ' mIndex = Control.Id 'mIndex は、グローバル変数 '←間違いです。  mIndex = Cntrl.Id  CancelDefault = True ''取りやめにする End Sub

o_w_nakazaki
質問者

お礼

ご回答いただきましてありがとうございます。 返答が遅くなってしまって申し訳ありません。 回答者様のサンプルをもとに 何とか意に適う処理を作ることが出来ました。 本当にありがとうございました。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 以下のようにして判定します。ただし、印刷のショートカットキーまでは、設定はしておりません。そこまですると、返って不便になることがあります。 >Workbook_BeforePrintイベント内で処理を行っております。 >印刷ボタン押下時と、プレビューボタン押下時とで >処理を分岐させたいのですが、 なお、特に、その区分けは、BeforePrint イベントとは関係がありません。クラス側でも、BeforePrint でも、どちらでも区分けは出来ます。Excel 2000 でも、他のバージョンでも、おそらくは、Id は、変わらないはずです。印刷プレビューは、109, 印刷ボタンは、2521, 印刷ダイアログコマンド(メニューのファイル-印刷)は、4 です。 Excel 2000で、テストはしております。 '--------------------------------------------- 標準モジュール Private ClassBtns(2) As New Class1 Public mIndex As Integer Sub NewBtnSetting() Dim i As Integer  With Application   Set ClassBtns(0) = New Class1   Set ClassBtns(0).myNewBtn = .CommandBars("Standard").FindControl(, 2521) '印刷   Set ClassBtns(1) = New Class1   Set ClassBtns(1).myNewBtn = .CommandBars("Standard").FindControl(, 109) '印刷プレビュー   Set ClassBtns(2) = New Class1   Set ClassBtns(2).myNewBtn = .CommandBars("Worksheet Menu Bar").Controls("ファイル(&F)").Controls("印刷(&P)...") '印刷  End With End Sub Sub Auto_Open() 'ThisWorkbook_Open イベントでも可能  Call NewBtnSetting End If '--------------------------------------------- Class モジュール Private WithEvents NewBtn As Office.CommandBarButton Public Property Set myNewBtn(ByVal myBtn As CommandBarButton)  Set NewBtn = myBtn End Property Private Sub NewBtn_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)  'MsgBox Ctrl.Caption & "が押されました"  mIndex = Control.Id 'mIndex は、グローバル変数  'CancelDefault = True ''取りやめにする End Sub '--------------------------------------------- 'ThisWorkbook モジュール Private Sub Workbook_BeforePrint(Cancel As Boolean)  MsgBox mIndex End Sub