Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не могу при открытии добавить поля в ComboBox

31K
19 октября 2007 года
AlexandrSid
4 / / 19.10.2007
Помогите пожалуйста, а то я в VBA совсем плох.
При открытии в документе Excel есть определенное количество Comboboх , сколько не известно. В каждое ComboBox мне надо добавить поля для выбора. У меня получается только изменять его свойства, а на метод AddItem он ругается
275
19 октября 2007 года
pashulka
985 / / 19.09.2004
AlexandrSid, Для того, чтобы заполнить все ComboBox, расположенные в определённом рабочем листе, можно использовать любой из нижеопубликованных вариантов, заменив кодовое имя и индекс(номер) рабочего листа на необходимые.

 
Код:
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


Код:
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


Примечание : Данное событие должно располагаться только в модуле ThisWorkbook(ЭтаКнига), если это условие, по каким-то причинам неприемлемо, то Вы можете использовать макрос Auto_Open() который может находиться в любом стандартном модуле.
31K
19 октября 2007 года
AlexandrSid
4 / / 19.10.2007
Спасибо огромное, а то у меня из-за этого вся работа встала
43K
16 октября 2008 года
Виталий_MS_Office
2 / / 16.10.2008
Доброго вермени суток.

У меня есть проект: 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# проекте?
43K
27 октября 2008 года
Виталий_MS_Office
2 / / 16.10.2008
Проблема решилась так:
// Создание
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);
}
}
}
275
27 октября 2008 года
pashulka
985 / / 19.09.2004
Виталий, В Excel подобные списки можно также создать используя семейство DropDowns, которое, кстати, может(теоретически) помочь Вам обойтись без проверки типа, т.е.

// Создание
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);
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог