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

    PowerShellからClosedXMLを使ってExcelファイルを作成する方法

    以前C#からClosedXMLを使ってExcelファイルを操作する方法…

  2. Excel

    名前付きセル(範囲)にコメントを付けるVBAマクロ

    Excelでマニュアルを作成する際、名前付きセル範囲を明記する必要があ…

  3. Office関連

    ソースコードを番号行付きのテーブルに変換するWordマクロ

    Word文書内のソースコードを、他の文書と区別して目立たせたいときに役…

  4. リボン関連

    複数のtoggleButton要素の中から1つだけしかオンにできないようにする

    「リボンのトグルボタン」で回答したコードです(下に記載しているコードは…

  5. Office関連

    Adobe Reader XIを利用してPDFファイルのページ数を取得するVBAマクロ

    先日Adobe Readerを利用してPDFファイルのページ数を取得す…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP