Я пытаюсь установить первое значение из списка нескольких ActiveX ComboBoxe в MS Excel, используя свойство TopIndex
. Это можно легко сделать, используя следующее:
ComboBox1.TopIndex = *whatever*
Проблема в том, что мои ComboBox динамически генерируются с использованием al oop, поэтому я могу получить к ним доступ только с помощью объекта OLEObjects
.
Я пробовал следующее:
i = 0
Do Until IsEmpty(Sheets("temp").Range("A1").Offset(0, i).Value)
'First I create a Range to populate each ComboBox
Set rngdata = Sheets("temp").Range(Sheets("temp").Range("A1").Offset(1, i), Sheets("temp").Range("A1").Offset(1, i).End(xlDown))
'Now I create the ComboBoxs
Set rng = Sheets("temp").Range("A1").Offset(0, i)
With Sheets("temp").OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, DisplayAsIcon:=False, Left:=rng.Left, Top:=rng.Top, Width:=rng.Width, Height:=rng.Height)
.Name = "patapouf" & i 'name
.Object.List = rngdata.Value 'Populate the list from rngdata
.Object.AddItem "All" 'I add a new value "All"
.Object.TopIndex = .Object.ListCount 'I put the choice "All" in first position
End With
i = i + 1
Loop
Excel возвращает: «Ошибка '380': невозможно определить свойство TopIndex. Недопустимое значение свойства. (Перевод исходной ошибки на французском языке: Erreur d'exécution 380: невозможно definir la propriété TopIndex. Valeur de propriété non valide).
Ошибка возникает из этой строки:
.Object.TopIndex = .Object.ListCount
Я считаю, что использование «.Object.TopIndex» не подходит для обработки с помощью ActiveX ComboBox, но я не могу найти другого способа сформулировать это.