Настройка поля со списком в пользовательской ленте.
Не понимаю, как создать обратный вызов onChange.
Это XML-код комбобокса:
<group id = "GroupDemo2"
label = "SelectSheet"
autoScale = "true"
imageMso = "AddInManager">
<comboBox id = "ComboBox001"
label = "comboBox001”
sizeString=“XXXX”
onChange = "RibbonCallbacks.ComboBox001OnChange"
getText = "RibbonCallbacks.ComboBox001GetText">
<item id = "ItemOne”
label=“One”/>
<item id = "ItemTwo”
label=“Two”/>
<item id = "ItemThree”
label=“Three”/>
</comboBox>
</group>
Я попробовал это, но это ничего не делает:
Sub ComboBox001OnChange(control As IRibbonControl, id As String)
Select Case id
Case "ItemOne”
Sheets("Sheet1”).Select
Case "ItemTwo”
Sheets("Sheet2”).Select
Case "ItemThree”
Sheets("Sheet3”).Select
End Select
End Sub
Спасибо!
Возникла проблема с вашей цитатой. Они не прошли проверку. После исправления цитаты она проверена и, похоже, будет работать.
<customUI xmlns = "http://schemas.microsoft.com/office/2009/07/customui">
<ribbon>
<tabs>
<tab id = "customTab" label = "Contoso" insertAfterMso = "TabHome">
<group id = "GroupDemo2"
label = "SelectSheet"
autoScale = "true"
imageMso = "AddInManager">
<comboBox id = "ComboBox001"
label = "comboBox001"
sizeString = "XXXX"
onChange = "RibbonCallbacks.ComboBox001OnChange"
getText = "RibbonCallbacks.ComboBox001GetText">
<item id = "ItemOne"
label = "One"/>
<item id = "ItemTwo"
label = "Two"/>
<item id = "ItemThree"
label = "Three"/>
</comboBox>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
По поводу второго саба. Проверьте документ Microsoft на наличие поля со списком в ленточном поиске getText и решите, нужно ли оно вам. https://learn.microsoft.com/en-us/dotnet/api/system.windows.controls.ribbon.ribboncombobox?view=windowsdesktop-8.0#events
Формы половинной и полной ширины
Имя обратного вызова Sub должно быть ComboBox001_OnChange
, подчеркивание отсутствует.
Возвращаемое значение id
— One
вместо ItemOne
.
-- XML
<group id = "GroupDemo2"
label = "SelectSheet"
imageMso = "AddInManager">
<comboBox id = "ComboBox001"
label = "comboBox001"
onChange = "ComboBox001_OnChange">
<item id = "ItemOne"
label = "One"/>
<item id = "ItemTwo"
label = "Two"/>
<item id = "ItemThree"
label = "Three"/>
</comboBox>
</group>
-- Callback VBA Code
Sub ComboBox001_OnChange(control As IRibbonControl, id As String)
Select Case id
Case "One"
Sheets("Sheet1").Select
Case "Two"
Sheets("Sheet2").Select
Case "Three"
Sheets("Sheet3").Select
End Select
End Sub