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

    マクロに割り当てたショートカットキーをCSVファイルとして出力するWordマクロ

    Word MVPの新田さんが書かれた以下の記事を見て思いついたマクロで…

  2. Office関連

    格子状にガイドを追加するPowerPointマクロ

    前回の記事で、PowerPoint 2013で追加されたGuide、G…

  3. Office関連

    [Excel Services ECMAScript]タイマーでグラフを描画する。

    タイマーで特定のセルの値を増やしていき、それに合わせてグラフを描画して…

  4. Office関連

    Office 365 APIをVBAから呼び出す(1)

    2015年4月に公開されたOffice Teamのブログ記事「Toda…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP