Получение выбранного элемента из раскрывающегося списка на ленте в Word 2007 с помощью макроса - PullRequest
1 голос
/ 30 декабря 2010

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

http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/d1cf7b3e-68cf-4b82-b806-a3431acde3b6/

Вышеуказанный поток рекомендует иметь хэш-таблицу элементов заранее, кэшировать выбранный идентификатор в раскрывающемся списке onAction () и использовать этот выбранный идентификатор, чтобы найти элемент из хеш-таблицы в onAction () кнопки.

НО, в моем случае, я заполняю ленту XML из базы данных. Этот XML ленты, очевидно, имеет XML для выпадающего списка, и я использую макросы для взаимодействия с выпадающим и другими элементами управления на ленте. Я не уверен, как получить коллекцию авансом, которая может использоваться макросом, подобным подходу, описанному в вышеупомянутой теме.

Ответы [ 2 ]

6 голосов
/ 04 января 2011

Я хотел бы поставить решение на тот случай, если у кого-то возникнет такая же проблема: -

Вот так выглядит мой выпадающий список: -

    <dropDown id="ddlItem"  
 getItemLabel="SetTheSelectedItemInDropDown"
 onAction="GetTheSelectedItemInDropDown"  label="Items">
    <item id="Item1" label="Item1"/>
    <item id="Item1" label="Item1"/>
    <item id="Item1" label="Item1"/>
    <item id="Item1" label="Item1"/>
    <item id="Item1" label="Item1"/>
    <item id="Item1" label="Item1"/>
    <item id="Item1" label="Item1"/>
    </dropDown>

Обратите внимание на обратные вызовы для getItemLabel иOnAction.Интересно, что getItemLabel предназначен для установки элемента в раскрывающемся списке (получить по раскрывающемуся списку).Это немного сбивает с толку, но так оно и есть, и именно поэтому я назвал свой метод «SetTheSelectedItemInDropDown».

Функция «GetTheSelectedItemInDropDown» для onAction - получить выбранный элемент.

Теперь следующееэто код макроса: -

' Declare a global variable to hold the selected item
 Dim itemName As String


' Definition of GetTheSelectedItemInDropDown which gets the selected item of the dropdown
 Sub GetTheSelectedItemInDropDown(control As IRibbonControl
 , id As String, index As Integer)
  If control.id = "ddlItems" Then
  itemName= id
  End If
 End Sub


 'Definition for SetTheSelectedItemInDropDown which sets the value in the dropdown from the global variable
 Sub SetTheSelectedItemInDropDown(control As IRibbonControl,
  index As Integer, ByRef returnedVal)
  If control.id = "ddlItems" Then
  returnedVal = itemName
  End If
 End Sub

Вот и все, теперь вы сможете установить и получить раскрывающийся список.

1 голос
/ 29 мая 2014

Следующий скрипт функции для Excel ... после 2-часового тестирования и поиска в Google я нашел способ изменить и получить значение.

1.) У вас должен быть список элементов (последовательность), ведьмы в выпадающих списках.

2.) используйте функции .onaaction и application.caller: (извините за чешский язык в следующем скрипте):

Sub test1()
Dim zabka As Byte
zabka = ActiveSheet.DropDowns((Application.Caller)).Value
'MsgBox zabka
Select Case zabka
Case 1
ActiveSheet.DropDowns((Application.Caller)).Text = "předání signální paré"
Case 2
ActiveSheet.DropDowns((Application.Caller)).Text = "předání čistopis"
Case 3
ActiveSheet.DropDowns((Application.Caller)).Text = "předání dokumentace SP"
End Select

End Sub

Sub aha()

With ActiveSheet.DropDowns.Add(Left:=Range("B" & 11 - 1).Left + 27, Top:=Range("B" & 11 -      1).Top, Width:=113, Height:=14)

.Caption = ""
.Name = "251"
.Text = "hoho"
.AddItem "předání signální paré"
.AddItem "předání čistopis"
.AddItem "předání dokumentace SP"
.OnAction = "test1"

'"'test1 " & xy & " '" <-way to call a sub and give a variable
End With
End Sub
...