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

    [Office 365 Solo]テクニカル サポートってどんなもの?

    前々回の記事に引き続いて、Office 365 Soloの疑問点第三弾…

  2. Office アドイン

    [Office用アプリ]Seller Dashboardの販売者アカウントを作成する。

    Office用アプリをOfficeストアで公開するためにはMicros…

  3. Office関連

    Windows 10 Technical PreviewにOffice XPをインストールしてみまし…

    「最新ビルドを詳細レビュー! Windows 10 Technical…

  4. Office アドイン

    [Officeアドイン]図形挿入アドイン

    最近まほうのルミティアとかプリキュア、オトカドールの記事ばかり書くこと…

  5. Office関連

    プログラムのソースコードを別の言語に変換するVBAマクロ

    SharpDevelopが公開している、ソースコードを変換するAPI「…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP