Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5143 / 13644 ツリー ←次へ | 前へ→

【52324】コマンドバーの特定条件でのボタンの非表示 nbo 07/11/8(木) 22:20 質問[未読]
【52334】Re:コマンドバーの特定条件でのボタンの非... ichinose 07/11/9(金) 8:07 発言[未読]
【52398】Re:コマンドバーの特定条件でのボタンの非... nbo 07/11/12(月) 21:56 お礼[未読]

【52324】コマンドバーの特定条件でのボタンの非表...
質問  nbo  - 07/11/8(木) 22:20 -

引用なし
パスワード
   はじめまして。

コマンドバーアドインを作成し、
機能的には問題ないのですが、
エクセルを起動し、ブックをすべて閉じた場合(エクセルは起動したまま)
標準のコマンドバーのボタンでは
使用できないボタンは(保存とか貼り付け等)は
グレー反転して使用できなくなります。

このような機能を作成したコマンドバーアドインに追加したいのですが
できるのでしょうか?(ボタン単位でグレー反転をしたい)

.Enableで条件を指定すればできそうなのですが、いまいちわかりません。
(ブックをすべて閉じた場合、ブックがひとつでも開いている状態を
リアルタイムで監視する?みたいなことができれば…)

皆様、お知恵を貸してください。よろしくお願いいたします。

【52334】Re:コマンドバーの特定条件でのボタンの...
発言  ichinose  - 07/11/9(金) 8:07 -

引用なし
パスワード
   ▼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


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

【52398】Re:コマンドバーの特定条件でのボタンの...
お礼  nbo  - 07/11/12(月) 21:56 -

引用なし
パスワード
   返信が遅くなり申し訳ありません。

ichinose様の通りで
無事思っていた動作確認できました。

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

5143 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free