カスタム ギャラリー コントロールを使って、セルに選択した内容を挿入する例です。その1と同じことをVBAでデータを代入して行います。データが変化する場合などに使えます。
とにかくギャラリーコントロールに入れたいデータを配列化すると反映されるようになります。
XML・customUI.xmlの記述例:
<?xml version="1.0" encoding="Shift_JIS" ?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="MyAddInInitialize">
<ribbon>
<tabs>
<tab id="CustomTab" label="テスト">
<group id="Group1" label="テストグループ1">
<gallery id="MonthGallery" imageMso="DateAndTimeInsert" label="月選択" columns="3" rows="4" onAction="Module1.Macro1" getItemCount="Module1.Macro2" getItemID="Module1.Macro3" getItemLabel="Module1.Macro4" />
</group >
</tab>
</tabs>
</ribbon>
</customUI>
VBAの方では
VBA・標準モジュール、Module1の記述例:
Dim MyRibbon As IRibbonUI
Dim I As Variant
'動的に更新たい場合は記述する
Sub MyAddInInitialize(Ribbon As IRibbonUI)
Set MyRibbon = Ribbon
'設定したいデータを配列に代入
I = Array("1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月")
End Sub
Sub Macro1(control As IRibbonControl, selectedId As String, selectedIndex As Integer)
ActiveCell.Value = MonthName(selectedIndex + 1)
End Sub
Sub Macro2(control As IRibbonControl, ByRef count)
count = UBound(I) + 1
End Sub
Sub Macro3(control As IRibbonControl, index As Integer, ByRef ID)
ID = "Month" & index
End Sub
Sub Macro4(control As IRibbonControl, index As Integer, ByRef label)
label = I(index)
End Sub
リボンのカスタイマイズ方法トップ