Office関連

[リボン・カスタマイズ]dropDown要素の初期項目を指定する。

MSDN フォーラムに「リボン:ドロップダウンリストにlabel初期値を表示」という質問がありました。
Excelファイルを開いたときに、カスタマイズしたドロップダウンの初期値を指定したい、という質問です。

こういった場合は、dropDown要素のgetSelectedItemID属性のコールバックで子要素のidを指定、もしくはgetSelectedItemIndex属性のコールバックで子要素のインデックスを指定することで対応可能です。

子要素のidを指定する場合

<?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <ribbon>
    <tabs>
      <tab id="tabSample" label="Sample Tab">
        <group id="grpSample" label="Sample Group">
          <dropDown id="ddnSample" label="Sample" getSelectedItemID="ddnSample_getSelectedItemID">
            <item id="itm1" label="Item 01" />
            <item id="itm2" label="Item 02" />
            <item id="itm3" label="Item 03" />
          </dropDown>
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>
Option Explicit

Public Sub ddnSample_getSelectedItemID(control As IRibbonControl, ByRef returnedVal)
  returnedVal = "itm2"
End Sub

dropdown_getselecteditemid_01

子要素のインデックスを指定する場合

<?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <ribbon>
    <tabs>
      <tab id="tabSample" label="Sample Tab">
        <group id="grpSample" label="Sample Group">
          <dropDown id="ddnSample" label="Sample" getSelectedItemIndex="ddnSample_getSelectedItemIndex">
            <item id="itm1" label="Item 01" />
            <item id="itm2" label="Item 02" />
            <item id="itm3" label="Item 03" />
          </dropDown>
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>
Option Explicit

Public Sub ddnSample_getSelectedItemIndex(control As IRibbonControl, ByRef returnedVal)
  returnedVal = 2
End Sub

dropdown_getselecteditemid_02

dropDown要素の子要素を動的に設定する場合

上記例ではdropDown要素の子要素としてitem要素を定義しましたが、getItemCount、getItemID、getItemLabelといった属性のコールバックを使うことで、これらを動的に設定することもできます。

<?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="grpSample" label="Sample Group">
          <dropDown id="ddnSample" label="Sample" 
                    getItemCount="ddnSample_getItemCount"
                    getItemID="ddnSample_getItemID"
                    getItemLabel="ddnSample_getItemLabel"
                    getSelectedItemID="ddnSample_getSelectedItemID"
                    onAction="ddnSample_onAction" />
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>
Option Explicit

Private itm As Variant

Public Sub rbnSample_onLoad(ribbon As IRibbonUI)
  'ドロップダウンとして設定する項目を配列に格納します。
  itm = Array("リンゴ", "バナナ", "パイナップル", "イチゴ")
End Sub

Public Sub ddnSample_getItemCount(control As IRibbonControl, ByRef returnedVal)
  '配列の要素数からドロップダウンの項目数を設定します。
  returnedVal = UBound(itm) + 1
End Sub

Public Sub ddnSample_getItemID(control As IRibbonControl, index As Integer, ByRef returnedVal)
  'ドロップダウンの各項目のIDを設定します。
  returnedVal = "itm" & index
End Sub

Public Sub ddnSample_getItemLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
  '配列に格納した文字列からドロップダウンの各項目のラベルを設定します。
  returnedVal = itm(index)
End Sub

Public Sub ddnSample_getSelectedItemID(control As IRibbonControl, ByRef returnedVal)
  'デフォルトで選択されるドロップダウンの項目をIDで指定します。
  returnedVal = "itm2"
End Sub

Public Sub ddnSample_onAction(control As IRibbonControl, id As String, index As Integer)
  MsgBox "id:" & id & vbNewLine & _
         "index:" & index & vbNewLine & _
         itm(index), vbInformation + vbSystemModal
End Sub

dropdown_getselecteditemid_03

【感想】町田くんの世界1巻前のページ

[VBA]DataObjectを使ったクリップボード操作が上手くいかない場合の対処法次のページ

関連記事

  1. Office関連

    [Excel Services ECMAScript]セルにデータを入力する。

    埋め込んだExcelワークブックのセルにデータを入力するコードです。…

  2. Office関連

    Microsoft Translator APIで文字列を翻訳するVBAマクロ

    以前書いた記事で、Google翻訳を使って文字列を翻訳するマクロを紹介…

  3. Office関連

    [VBA]CommandBars(“○○”).Controls.Addでメニ…

    Officeのユーザインタフェースがリボンに変わってから、下記のように…

  4. Office関連

    [VBA]ファイルタブ(Backstage ビュー)の表示を禁止する。

    数年前ホームページで「ファイルタブボタンのクリックを禁止する(Offi…

  5. Office関連

    [PowerPoint]テーブルを「変形」して値の変化を強調

    前回の記事と同じく、Insider版のバージョン 1903 (ビルド …

  6. Office関連

    VBE用のCOMアドインをメモ帳で作ってみる。

    “Officeアプリケーション用のCOMアドインをVisual Stu…

コメント

  • コメント (0)

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

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP