エクセル研究室−Excelの基本的な使い方、応用技を紹介

コマンドボタンの使用可・不可を動的に切り替える

コマンドボタンの使用可・不可を動的に切り替える



「テストコマンド1」を動的に使用可・不可を切り替える例です。



テストコマンド3を実行


テストコマンド3を実行すると、ダイアログが表示される


テストコマンド1が実行可能になる


リボンで動的にEnabledを切り替えるにはXMLの記述で「getEnabled」を使用します。
「get」と付くので取得のみと思われがちですが、設定も出来ます。

以下の記述を解説すると「Button1」を動的に切り替えたいので、XMLの「getEnabled」は「Button1」部分に記述します。VBAにはその時、設定したい値を設定します。

ボタンを押して更新するのはあくまで「Button3」をクリックした時で、トグルボタンのオン・オフで切り替えるので、VBAのInvalidateControlの記述は「Button3」のOnAtionに設定してある「Macro3」に記述します。
「Macro4」はファイルオープン時とInvalidateControl実行時に実行されます。

また、XMLの「<customUI ・・>」に「onLoad="***"」を入れます。これはファイル起動時に自動的に実行するコードを意味します。


XML・customUI.xmlの記述例:


<?xml version="1.0" encoding="Shift_JIS" ?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="MyAddInInitialize">
  <ribbon>
    <tabs>
      <tab id="CustomTab" label="テスト">
        <group id="Group1" label="テストグループ1">
          <button id="Button1" imageMso="FilePrint" label="テストコマンド1" size="large" onAction="Module1.Macro1" getEnabled="Module1.Macro4" />
        </group >
        <group id="Group2" label="テストグループ2">
          <button id="Button2" imageMso="FileSave" label="テストコマンド2" size="normal" onAction="Module1.Macro2" />
          <toggleButton id="Button3" imageMso="FileClose" label="テストコマンド3" size="normal" onAction="Module1.Macro3" />
        </group >
      </tab>
    </tabs>
  </ribbon>
</customUI>


VBA・標準モジュール、Module1の記述例:


Dim MyRibbon As IRibbonUI
Dim B As Boolean

'動的に更新たい場合は記述する
'ファイルオープン時に自動的に実行される
Sub MyAddInInitialize(Ribbon As IRibbonUI)
 Set MyRibbon = Ribbon
End Sub

'コマンドボタン
Sub Macro1(control As IRibbonControl)
 MsgBox "テストコマンド1"
End Sub

'コマンドボタン
Sub Macro2(control As IRibbonControl)
 MsgBox "テストコマンド2"
End Sub

'トグルボタン
Sub Macro3(control As IRibbonControl, ByRef returnValue)
 MsgBox IIf(returnValue, "オンにします", "オフにします")
'トグルボタンのオン、オフの状態を変数Bに代入
 B = returnValue
'指定のIDのコマンドを更新する
 MyRibbon.InvalidateControl "Button1"
End Sub

'getEnabledの記述
Sub Macro4(control As IRibbonControl, ByRef enabled)
'トグルボタンの状態で使用可・不可を切り替える
 enabled = B
End Sub








リボンのカスタイマイズ方法トップ