|
▼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
これでブックを閉じた時にアクティブなブックが存在しなければ、
"テストコマンドバー"の第一ボタンが使用不可になります。
|
|