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
子要素のインデックスを指定する場合
<?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要素の子要素を動的に設定する場合
上記例では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
この記事へのコメントはありません。