Office関連

[リボン・カスタマイズ]グループの表示・非表示をトグルボタンで切り替える。

数年前に書いた記事に下記コメントをいただきました。

Excelにて、リボン、ボタンではなく、リボン内の特定の「グループ」について表示/非表示をトグルボタンのクリック操作で行う場合のXMLコードを教えて下さい。

グループに限らず、リボン上の各要素の表示・非表示を動的に切り替えたい場合はgetVisible属性を使います。

また、表示状態をトグルボタンで設定したいとのことなので、toggleButton要素のgetPressed属性でボタンの押下状態を設定し、onAction属性でボタンをクリックした際の処理を設定します。

リボンXML

<?xml version="1.0" encoding="utf-8"?>
<customUI onLoad="rbnSample_onLoad" xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <ribbon>
    <tabs>
      <tab id="tabSample" label="Sample Tab">
        <group id="grpSample1" label="Group 1" getVisible="grpSample_getVisible">
          <button id="btnDummy1" label="Button 1" imageMso="HappyFace" size="large" />
          <button id="btnDummy2" label="Button 2" imageMso="HappyFace" size="large" />
          <button id="btnDummy3" label="Button 3" imageMso="HappyFace" size="large" />
          <button id="btnDummy4" label="Button 4" imageMso="HappyFace" size="large" />
        </group>
        <group id="grpSample2" label="Group 2">
          <toggleButton id="tglSample" label="表示・非表示切替" imageMso="HappyFace" size="large" supertip="グループの表示・非表示を切り替えます。" onAction="tglSample_onAction" getPressed="tglSample_getPressed" />
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

VBAコード(標準モジュール)

Option Explicit

Private myRibbon As Office.IRibbonUI
Private flg As Boolean

Public Sub rbnSample_onLoad(ribbon As IRibbonUI)
  Set myRibbon = ribbon
  flg = True
End Sub

Public Sub grpSample_getVisible(control As IRibbonControl, ByRef returnedVal)
  returnedVal = flg
End Sub

Public Sub tglSample_onAction(control As IRibbonControl, pressed As Boolean)
  flg = pressed
  myRibbon.InvalidateControl "grpSample1"
End Sub

Public Sub tglSample_getPressed(control As IRibbonControl, ByRef returnedVal)
  returnedVal = flg
End Sub

上記コードでは、トグルボタンが押下されている状態の時にはグループが表示され、解除されている状態のときは非表示になります。

関連記事

  1. Office関連

    [VBA]自動的にフォントサイズを調整する疑似テキストボックス

    前回と同様、環境依存つながりでmougの給湯室に書いたコードを載せてお…

  2. Office関連

    [VBA]桁を揃えてDebug.Printする。

    @CallMeKoheiさんのブログの記事に「Excel VBA イミ…

  3. Office アドイン

    [Officeアドイン]マニフェストファイルをデバッグする方法

    Office アドイン本体はF12ツール等を使ってデバッグすることがで…

  4. Office関連

    蛍光ペンでマークした部分の文字数をカウントするWordマクロ

    Twitterでたまたま下記のツイートを見つけたので、簡単な処理を考え…

  5. Office関連

    「NetOffice」で簡単に.NETからOfficeを操作

    ネットで「NetOffice」なるツールがあることを知ったので、早速試…

コメント

  • コメント (5)

  • トラックバックは利用できません。

  1. きぬあさ様
    早速ご対応下さりありがとうございます!!

    これから実際にやってみます。
    また不明点が発生しましたら質問させて頂きます。
    そのせつはどうぞよろしくお願い致します。

  2. きぬあさ様

    無事にやりたいことができました。
    ありがとうございます♪

    さて、追加の質問をさせて下さい。
    複数の「グループ」の表示/非表示をリボンからではなく、
    アドインのユーザフォームのコントロール(チェックボックス等)から行う方法を
    ご教示下さい。これによりExcelクローズ時の状態をファイル等に保存しておいて
    次回のExcel起動時のデフォルトにしたいと思っています。

    どうぞよろしくお願い致します。

    • > spacedragon さん

      初心者備忘録管理人のきぬあさです。
      myRibbonをPublicにしておけば、ユーザフォームからでもInvalidateControlメソッドを呼び出せますので、問題は“設定をどのタイミングでどこに保存し、どこから読み込むか?”になるかと思います。

      シート、レジストリ、外部ファイル、ブック内のカスタムXML、ファイルのプロパティ、様々な保存場所が考えられますが、一例としてシートに設定値を保存するthom氏のブログ記事をご紹介します。

      ・VBA マクロの設定をどこに保存するか
      https://thom.hateblo.jp/entry/2015/06/19/052753
      ・VBA マクロで利用する設定値をシートに保存し、文字列でアクセスするテクニック
      https://thom.hateblo.jp/entry/2018/06/16/035609
      ・VBA マクロの設定をシートに保存する場合のテクニック
      https://thom.hateblo.jp/entry/2015/06/21/021207

  3. きぬあさ様

    ありがとうございます♪
    シートに設定値を保存するのは現在のアプリに実装ずみなのでOKです。
    問題はユーザフォーム上のチェックボックスによってトグルで
    特定のグループの表示/非表示を動的に切り替えたいです。
    そのときのInvalidateControl周りの記述方法が分かりません。

    UIのonLoadでPublic変数のリボンをセットしたあとに、
    チェックボックスの記述はどうなるのでしょうか?
    お手数ですがご教示頂けますと幸いです

    どうぞよろしくお願い致します。

    • > spacedragon さん

      初心者備忘録管理人のきぬあさです。
      簡単なサンプルを書いてみましたので、ご参考にしていただければ幸いです。

      ・[リボン・カスタマイズ]グループの表示・非表示をユーザーフォームのチェックボックスで切り替える。
      https://www.ka-net.org/blog/?p=11294

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP