|
|
|
Занесение данных из массива
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток, уважаемые! есть код: maxpost=30 'например, кол-во поставщиков равно 30 For i = 0 To maxpost Worksheets("Поставщики").Cells(i+1, 1).Value = a(i) If a(i) <> "" Then Worksheets("Поставщики").Cells(i+1, 2).Value = 1 Worksheets("Поставщики").Cells(i+1, 3).Value = 1 End If Next i a(i) - есть некий массив, в котором занесены данные "Поставщики" - лист, в котором находиться список поставщиков. на момент обработки активным является лист "Отчет1" Вопрос: Есть обработка, которая обрабатывает более 1000 записей, выбирает поставщиков, сравнивает с "Поставщики" удаляет лишнее, сортирует список и убирает в массиве пустые строки. Все это занимает 2 секунды. При обработке этого кода (указан выше) программа зависает на 2-4 минуты. Т.е. он работает, все выводиться, причем через точку остановы и потом через F8 все проходит достаточно быстро. Объясните пожалуйста, почему и как оптимизировать. Заранее большое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 09:26 |
|
||
|
Занесение данных из массива
|
|||
|---|---|---|---|
|
#18+
AleksBAVПри обработке этого кода (указан выше) программа зависает на 2-4 минуты. Т.е. он работает, все выводиться, причем через точку остановы и потом через F8 все проходит достаточно быстро. Не верю. Не чему тут обрабатываться 4 минуты. Для убыстрения. Application.ScreenUpdating =False Application.EnableEvents =False Потом опять вкючить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 09:29 |
|
||
|
Занесение данных из массива
|
|||
|---|---|---|---|
|
#18+
Спасибо за код, но не помогает. Я уже поставил код перед обработкой данного кода. сначала Worksheets("Отчет1").Cells(2, 3).Value = Time перед самой обработкой: Worksheets("Отчет1").Cells(2, 4).Value = Time время составляет 2 секунды, а потом зависон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 09:35 |
|
||
|
Занесение данных из массива
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 09:47 |
|
||
|
Занесение данных из массива
|
|||
|---|---|---|---|
|
#18+
Спасибо за код, красивее, но все равно не работает. а через точку остановы и F8 - летает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 09:58 |
|
||
|
Занесение данных из массива
|
|||
|---|---|---|---|
|
#18+
maxpost=30 'например, кол-во поставщиков равно 30 With Worksheets("Поставщики") For i = 1 To maxpost - 1 .Cells(i, 1).Value = a(i-1) If a(i-1) <> "" Then .Cells(i, 2).Value = 1 .Cells(i, 3).Value = 1 End If Next i End With если взять Ваш код и поставить: Sheets("Поставщики").Select maxpost=30 'например, кол-во поставщиков равно 30 For i = 1 To maxpost - 1 Cells(i, 1).Value = a(i-1) If a(i-1) <> "" Then Cells(i, 2).Value = 1 Cells(i, 3).Value = 1 End If Next i то весь код обрабатывается 3 секунды, но записи заносятся в текущий (отчет1) лист. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 10:18 |
|
||
|
Занесение данных из массива
|
|||
|---|---|---|---|
|
#18+
Странная особенность, решил прислать пример, начал чистить файл до нужного размера, в итоге остались 2 листа Отчет1 и Поставщики, после этого запустил обработку, которая прошла за 2 секунды, вот теперь вопрос, почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2008, 10:25 |
|
||
|
|

start [/forum/topic.php?fid=60&fpage=195&tid=2162449]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 338ms |

| 0 / 0 |
