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

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

明日ちゃんのセーラー服&花待ついばら めぐる春コラボプレゼントに当選しました!前のページ

Google Docs API v1を試してみました。次のページ

関連記事

  1. Office関連

    Outlookの予定本文の一部を文字装飾するVBAマクロ

    Outlookの予定本文の一部をマクロで太字にしたい」との質問がありま…

  2. Office関連

    「Excel VBAでラクラク Win64 APIプログラミング」(大村あつし著)レビュー

    当ブログでも以前書評を書いた「Excel VBAの神様 ボクの人生を変…

  3. Office関連

    カウントダウンタイマーを作成するPowerPointマクロ

    大分前に書いた記事について問い合わせがありましたので、マクロを作成しな…

  4. Excel

    VBAでTTSエンジンの各種情報を列挙する

    今回はTTSエンジンの各種情報を列挙するマクロを紹介します。Mic…

  5. Office関連

    VBAプロジェクトを「展開する」VBAマクロ

    MSDNフォーラムに面白い質問がありました。VBE・プロジェクト …

  6. Office関連

    Office 2016 Previewをインストールしてみました。

    「Microsoft、「Office 2016」と「Skype for…

コメント

  • コメント (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.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP