ListBox Excel

Программирование на Visual Basic for Applications
Brudda
Обычный пользователь
Обычный пользователь
 
Сообщения: 79
Зарегистрирован: 21.02.2005 (Пн) 14:47
Откуда: Рига

ListBox Excel

Сообщение Brudda » 13.07.2011 (Ср) 16:31

Привет.
У меня такая пробема: на форме есть ListBox в котором заданы несколько колонок (20) и их необходимо заполнить какими-то данными.
Код: Выделить всё
With UserForm1
    .ListBox1.ColumnCount = 20
    .ListBox1.AddItem "+"
        For i = 1 To 15
            .ListBox1.List(.ListBox1.ListCount - 1, i) = "+"
        Next i
End With


Так вот, когда i достигает значения 10 программу выбивает с ошибкой "неверный параметр". Я не нашел нигде ограничений по количеству колонок (столбцов) в ListBox. Может подскажете в чем проблема и как с ней бороться?
Заранее спасибо.
С почтением,
Brudda

Brudda
Обычный пользователь
Обычный пользователь
 
Сообщения: 79
Зарегистрирован: 21.02.2005 (Пн) 14:47
Откуда: Рига

Re: ListBox Excel

Сообщение Brudda » 14.07.2011 (Чт) 13:13

Может кому пригодится...
Заполнение ListBox вышеуказанным способом действительно возможно, если количество колонок (столбцов) не превышает 9 (включительно). Если же количество колонок (столбцов) превышает 9, то заолнять ListBox надо используя диапазон ячеек.
Код: Выделить всё
ListBox.RowSource =  "A1:T20"

Brudda

Template
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 09.09.2006 (Сб) 18:03

Re: ListBox Excel

Сообщение Template » 11.03.2012 (Вс) 17:47

Brudda писал(а):когда i достигает значения 10 программу выбивает с ошибкой "неверный параметр". Я не нашел нигде ограничений по количеству колонок (столбцов) в ListBox


Читать справку нынче не модно :P
For an unbound data source, there is a 10-column limit (0 to 9).


А заполнить ListBox можно и с большим количеством столбцов, ежели использовать свойство List (или Column)

Код: Выделить всё
ListBox1.ColumnCount = 20
ListBox1.List = Range("A1:T20").Value


Код: Выделить всё
Dim strArr$(1 To 20, 1 To 20), intC%, intR%

For intC = 1 To 20
    For intR = 1 To 20
        strArr(intC, intR) = Int(Rnd() * 100)  'типа для примера, а посему без Randomize
    Next
Next

ListBox1.ColumnCount = -1 '20
ListBox1.List = strArr()


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

    TopList