電子書籍の厳選無料作品が豊富!

いつもお世話になっております。
Excel2000を使用しております。

Workbook_BeforePrintイベント内で処理を行っております。
印刷ボタン押下時と、プレビューボタン押下時とで
処理を分岐させたいのですが、
どちらが実行されたのか判定する方法がどうしてもわかりませんでした。

ご教授いただけましたら幸いです。

何卒よろしくお願いいたします。

A 回答 (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
    • good
    • 0
この回答へのお礼

ご回答いただきましてありがとうございます。

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

本当にありがとうございました。

お礼日時:2007/03/15 11:15

こんにちは。



以下のようにして判定します。ただし、印刷のショートカットキーまでは、設定はしておりません。そこまですると、返って不便になることがあります。

>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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!