Установить переменную на основе раскрывающегося меню ленты

Я создал настраиваемую ленту с раскрывающимся списком XML:

<dropDown id="sections" onAction="sectionsmacro" >
<item id="section1" image="section1" label="navy" />
<item id="section2" image="section2" label="sapphire" />
<item id="section3" image="section3" label="purple" />
<item id="section4" image="section4" label="emerald" /> 
<item id="section5" image="section5" label="cyan" />
</dropDown>

Я хотел бы установить макрос, который будет работать со случаями «если, то», в зависимости от того, что выбрано в раскрывающемся списке.

Итак, у меня есть макрос, который окрашивает все в черный цвет, но если выбран фиолетовый, мой макрос делает все фиолетовым. Как сделать ссылку на раскрывающийся список ленты на макроуровне? Спасибо за вашу помощь!


Спасибо, хотя это не совсем то, что я имел в виду ... Допустим, я выбрал слово «военно-морской флот» в раскрывающемся списке, и на этом все. Он имеет индекс 0. Следующим шагом будет использование этой переменной в другом макросе. Так что у меня было бы что-то вроде этого:

Sub tablecolour()

'if value on drop down = 0 ('navy') then 
else end if

end sub

Итак, в зависимости от значения, выбранного в раскрывающемся списке, я хотел бы запустить другой макрос определенным образом. Я не знаю, как использовать значение из раскрывающегося списка, чтобы его можно было прочитать как переменную в отдельном макросе.

Если вы согласны с жестким кодированием вариантов в раскрывающемся меню ленты, вы всегда можете использовать переданный аргумент index обратного вызова, чтобы получить индекс выбора. Итак, в вашем случае - index = 0 означает, что они выбрали флот и т. д.

ArcherBird 31.10.2018 14:46

Вам нужно сохранить выбранное значение в обратном вызове, аналогичном обратному вызову sectionsmacro в примере @jkpieterse, а затем использовать сохраненное значение в tablecolour.

Olle Sjögren 05.11.2018 13:31
1
2
132
1

Ответы 1

Простой. Добавьте это в модуль в файле Excel:

'Callback for sections onAction
Sub sectionsmacro(control As IRibbonControl, id As String, index As Integer)
    MsgBox index
End Sub

Как вы заметили, вы получите индекс выбранного элемента (начиная с нуля).

Другие вопросы по теме