Установка TopIndex на программно созданный ActiveX ComboBox - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь установить первое значение из списка нескольких 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, но я не могу найти другого способа сформулировать это.

1 Ответ

0 голосов
/ 10 июля 2020

Как указал Рори, позиция должна быть указана в качестве второго аргумента AddItem, а не путем попытки изменить значение TopIndex.

Это решило проблему.

...