- ベストアンサー
Excel2000 BeforePrintイベントで印刷かプレビューかの判定
いつもお世話になっております。 Excel2000を使用しております。 Workbook_BeforePrintイベント内で処理を行っております。 印刷ボタン押下時と、プレビューボタン押下時とで 処理を分岐させたいのですが、 どちらが実行されたのか判定する方法がどうしてもわかりませんでした。 ご教授いただけましたら幸いです。 何卒よろしくお願いいたします。
- みんなの回答 (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
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 以下のようにして判定します。ただし、印刷のショートカットキーまでは、設定はしておりません。そこまですると、返って不便になることがあります。 >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
お礼
ご回答いただきましてありがとうございます。 返答が遅くなってしまって申し訳ありません。 回答者様のサンプルをもとに 何とか意に適う処理を作ることが出来ました。 本当にありがとうございました。