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関連

    「あのコマンドどこだっけ? for Office 2013」の紹介

    Word MVPの新田さんのブログでも紹介していただいている自作フリー…

  2. Office関連

    ページ番号を取得するWordマクロ

    Wordマクロで選択位置のページ番号を取得する場合、簡単なのはSele…

  3. Office関連

    64ビット環境かどうかを判別するVBAマクロ

    2年以上前にMicrosoft Community(当時はMicros…

  4. Office関連

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

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

  5. Office アドイン

    「マイクロソフト Office 用アプリ開発スタートアップガイド」レビュー

    ※ 下記レビューはあくまでも個人的な感想です。日本初(恐らく)…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP