Private Sub Workbook_Open()
Dim iOLEObject As OLEObject, iArray
iArray = Array("Яблоки", "Груши", "Киви")
For Each iOLEObject In Лист1.OLEObjects
If TypeOf iOLEObject.Object Is MSForms.ComboBox Then
iOLEObject.Object.List = iArray
End If
Next
End Sub
Не могу при открытии добавить поля в ComboBox
При открытии в документе Excel есть определенное количество Comboboх , сколько не известно. В каждое ComboBox мне надо добавить поля для выбора. У меня получается только изменять его свойства, а на метод AddItem он ругается
Код:
Код:
Private Sub Workbook_Open()
Dim iOLEObject As OLEObject
For Each iOLEObject In Me.Worksheets(1).OLEObjects
If TypeName(iOLEObject.Object) = "ComboBox" Then
With iOLEObject.Object
.AddItem "Яблоки"
.AddItem "Груши"
.AddItem "Киви"
End With
End If
Next
End Sub
Dim iOLEObject As OLEObject
For Each iOLEObject In Me.Worksheets(1).OLEObjects
If TypeName(iOLEObject.Object) = "ComboBox" Then
With iOLEObject.Object
.AddItem "Яблоки"
.AddItem "Груши"
.AddItem "Киви"
End With
End If
Next
End Sub
Примечание : Данное событие должно располагаться только в модуле ThisWorkbook(ЭтаКнига), если это условие, по каким-то причинам неприемлемо, то Вы можете использовать макрос Auto_Open() который может находиться в любом стандартном модуле.
Спасибо огромное, а то у меня из-за этого вся работа встала
У меня есть проект: addin к Excel, написан на C# используя VSTO 2005.
На WorkSheet-е есть некий combobox, в него надо вставить значения и одно из них сделать selected.
На vba данный код работает (в combobox добавляются значения):
Dim sh As Worksheet
Set sh = ActiveWorkbook.Worksheets.Item(1)
sh.OLEObjects("ComboBoxX").Object.AddItem ("11sss11")
sh.OLEObjects("ComboBoxX").Object.AddItem ("22sss22")
Когда я пытаюсь тоже самое сделать в своем проекте на C# то данный код даже не компилируется:
Excel.Worksheet sheet = (Excel.Worksheet) wbk.Worksheets.get_Item(1);
sheet.OLEObjects("ComboBoxX").Object.AddItem("11sss11"); - ругается на эту строчку: Error 3 'object' does not contain a definition for 'Object'
Вариант достучаться до combobox-а через shapes тоже не проходит:
int nCount = sheet.Shapes.Count;
for (int i = 1; i <= nCount; i++)
{
Excel.Shape shape = sheet.Shapes.Item(i);
if (shape.Type == Office.MsoShapeType.msoOLEControlObject)
{
shape.ControlFormat.AddItem("11sss11", 1);
}
}
В процессе выполнения валится exception: Member not found. (Exception from HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND))
Как мне достучаться до combobox в C# проекте?
// Создание
shp = sheet.Shapes.AddFormControl(XlFormControl.xlDropDown, left, top, width, height);
//доступ
for (int i = 1; i <= sheet.Shapes.Count; i++)
{
Excel.Shape shape = sheet.Shapes.Item(i);
if (shape.Type == Office.MsoShapeType.msoFormControl)
{
if (shape.Name == nameOfNeededCombobox)
{
shape.ControlFormat.AddItem("11 test 11", 1);
shape.ControlFormat.AddItem("22 Test 22", 2);
}
}
}
// Создание
DropDown = sheet.DropDowns.Add(left, top, width, height);
//Доступ
for (int i = 1; i <= sheet.DropDowns.Count; i++)
{
Excel.DropDown DropDown = sheet.DropDowns.Item(i);
DropDown.AddItem("11 test 11", 1);
DropDown.AddItem("22 Test 22", 2);
}