| 
    
     |  | ▼nbo さん: おはようございます。
 
 >コマンドバーアドインを作成し、
 >機能的には問題ないのですが、
 >エクセルを起動し、ブックをすべて閉じた場合(エクセルは起動したまま)
 >標準のコマンドバーのボタンでは
 >使用できないボタンは(保存とか貼り付け等)は
 >グレー反転して使用できなくなります。
 >
 >このような機能を作成したコマンドバーアドインに追加したいのですが
 >できるのでしょうか?(ボタン単位でグレー反転をしたい)
 >
 >.Enableで条件を指定すればできそうなのですが、いまいちわかりません。
 >(ブックをすべて閉じた場合、ブックがひとつでも開いている状態を
 >リアルタイムで監視する?みたいなことができれば…)
 
 ユーザー操作で
 
 ブックがアクティブになったり、非アクティブになった時に
 アクティブブックが存在するか否かでボタンの使用可・不可の設定を行う方法です。
 この「ブックがアクティブになったり、非アクティブになった時」を
 
 Applicationレベルのイベントで拾います。
 
 
 一例ですが、当該アドインブックのThisworkbookのモジュールに
 
 '============================================================
 Option Explicit
 Private WithEvents app As Application
 Const cmdbname As String = "テストコマンドバー"
 
 '============================================================
 Private Sub app_WorkbookActivate(ByVal Wb As Workbook)
 Application.CommandBars(cmdbname).Controls(1).Enabled = True
 End Sub
 '============================================================
 Private Sub app_WorkbookDeactivate(ByVal Wb As Workbook)
 Application.OnTime Now(), "thisworkbook.chk_abk"
 End Sub
 '============================================================
 Private Sub Workbook_BeforeClose(Cancel As Boolean)
 'コマンドバーの削除処理(省略)
 set app=nothing
 End Sub
 '============================================================
 Private Sub Workbook_Open()
 'コマンドバー・ボタンの作成処理(省略)
 Set app = Application
 End Sub
 '============================================================
 Sub chk_abk()
 If ActiveWorkbook Is Nothing Then
 Application.CommandBars(cmdbname).Controls(1).Enabled = False
 End If
 End Sub
 
 
 これでブックを閉じた時にアクティブなブックが存在しなければ、
 "テストコマンドバー"の第一ボタンが使用不可になります。
 
 |  |