powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Экономия оперативной памяти при загрузке в ListBox гигантских списков
4 сообщений из 4, страница 1 из 1
Экономия оперативной памяти при загрузке в ListBox гигантских списков
    #36290605
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возникла необходимость загрузить в ListBox на форме гигантский список более 10000 строк...
Загрузил...
Комп периодически выдает "Недостаточно системных ресурсов для полного вывода на экран", причем как при работе формы так и в VBE.

Долго думал и понял что самый оптимальный способ - это подгрузка данных маленькими порциями в ListBox...

Попробовал реализовать с использованием Private Sub ListBox1_Click только для одного ListBox-a - не вышло...
Результаты неудачных попыток смотри здесь


В итоге плюнул и сделал с двумя ListBox-aми...с загрузкой через цикл

Вот что получилось:

Ежели у кого есть соображения по оптимизации кода - пожалуйста поделитесь...
...
Рейтинг: 0 / 0
Экономия оперативной памяти при загрузке в ListBox гигантских списков
    #36290617
MaximuS_G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что именно не получается в коде, приведенный мной в предыдущем топике ?
Там все загружаетя в одиy ListBox
...
Рейтинг: 0 / 0
Экономия оперативной памяти при загрузке в ListBox гигантских списков
    #36290733
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При загрузке данных циклом - все останавливается на стирании старого содержимого.
...
Рейтинг: 0 / 0
Экономия оперативной памяти при загрузке в ListBox гигантских списков
    #36291354
m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
m
Гость
Dan-K При загрузке данных циклом - все останавливается на стирании старого содержимого.
Вообщем так и не понял что именно не вышло...
Вот здесь Вам подсказали как можно сделать. Думаю что под col1,col2... PA предполагал коллекцию, так как данные загружаются быстрее в коллекцию, чем в массив... В любом случае, вот такой код можете попробовать... На 10000 строк у меня уходит 100 секунд (комп немного привисает). Попробуйте грузить по 500, 1000, что получится... И все в один листбокс.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Private Sub CommandButton1_Click()
Dim l As Long, b As Byte, x As Integer
Dim mycol As New Collection
Dim t

t = Timer

For l =  1  To  10000 
    For b =  1  To  5 
        mycol.Add ActiveSheet.Cells(l, b).Value
    Next b
Next l

x =  0 
For l =  1  To  50000  Step  5 
With ListBox1
   .AddItem mycol.Item(l)
   .List(x,  1 ) = mycol.Item(l +  1 )
   .List(x,  2 ) = mycol.Item(l +  2 )
   .List(x,  3 ) = mycol.Item(l +  3 )
   .List(x,  4 ) = mycol.Item(l +  4 )
End With
x = x +  1 
Next l

MsgBox Timer - t

End Sub
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Экономия оперативной памяти при загрузке в ListBox гигантских списков
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]