2016-06-08 2 views
0

У меня есть список на диаграмме, когда вы вызываете функцию drawDiagram, я хочу получить выбранные элементы списка. Вот мой код, чтобы сделать это:Listbox Выбранное свойство вызывает проблемы

Function DrawDiagram() 
Dim x As Integer 
Dim diaLst As ListBox 
Set diaLst = ActiveSheet.ListBoxes("DiaList") 

' find selected trends in List Box 
For x = 0 To diaLst.ListCount - 1 
    If diaLst.Selected(x) = True Then 
     MsgBox x 
    End If 
Next x 
End Function 

diaLst.ListCount правильно возвращает количество элементов в списке. Но diaLst.Selected (x) не работает вообще.

Сообщения об ошибке: немецкие: "Die Selected-Eigenschaft де ListBox-Objektes канны Nicht zugeordent старее" английского языка: "Выбранная Достояние ListBox объект не может быть назначена" (или аналогичным)

ли кто-нибудь знает, что я сделал не так?

благодаря Natasia

+0

Что произойдет, если вы попытаетесь распечатать diaLst.ListIndex? Или diaLst.List (diaLst.ListIndex)? –

+0

не работает тоже. – natasia

+0

Попробуйте использовать тусклый дилер в качестве объекта вместо списка. –

ответ

0

прежде всего, вы должны иметь дело с «Форма» контроль (а не «ActiveX» один) в противном случае вы не можете получить его через .ListBoxes собственность из Worksheet класса

I протестировал его в моей среде (W7-Pro и Excel 2013) и обнаружил, что (довольно странно для меня) массив свойств Selected() основан на 1.

Это осталось даже Option Base 0 в начале модуля

Убедитесь, что Microsoft Forms 2.0 Object ссылка Библиотека будет добавлена ​​в проект

Function DrawDiagram() 
    Dim x As Long 
    Dim diaLst As MSForms.ListBox 

    Set diaLst = ActiveSheet.ListBoxes("DiaList") 

    ' find selected trends in List Box 
    For x = 1 To diaLst.ListCount 
     If diaLst.Selected(x) = True Then 
      MsgBox x 
     End If 
    Next x 
End Function 
+0

Да, функция ничего не возвращает. Это еще не закончено. На самом деле, я не знаю, что вы подразумеваете под «управлением с помощью элемента управления, а не ActiveX». я могу получить список с помощью свойства .ListBoxes рабочего листа. Тем не менее, я не могу использовать свойство Selected каким-либо образом. В отличие от этого я могу без проблем использовать свойство addItem. – natasia

+0

решает вопрос? – user3598756

+0

Неудачно Нет. Прежде чем я запрограммировал суб/функцию выше, я сделал Userform с почти тем же кодом. Просто написал вместо diaLst Me.Listbox.Это отлично работает. Я действительно не знаю, почему это не работает. Кажется, что diaLst делает не имеет полного списка свойств списка. Но почему это происходит, я не знаю. – natasia

0

Кстати, это код, который я использовал для сгенерируйте поле списка в листе диаграммы в отдельной функции. В тот момент, когда нажата кнопка, вызывается функция DrawDiagram. Цель функции «DrawDiagram» - отобразить выбранные элементы списка на диаграмме.

Set diaLst = ActiveSheet.ListBoxes.Add(ActiveChart.ChartArea.Width - 110, 5, 105, 150) 
With diaLst 
    .Name = "DiaList" 
    .PrintObject = False 
    .MultiSelect = xlSimple 

    i = 2 
    While wTD.Cells(rowVarNames, i) <> "" 
     .AddItem wTD.Cells(rowVarNames, i) 
     i = i + 1 
    Wend 
    .Selected(3) = True 
End With 
0

использование Sheets ("Лист1"). Фигуры ("List Box 1"). OLEFormat.Object вместо

Смежные вопросы