Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Время выполнения скрипта непрерывно растет, От 30с при первом прогоне до 70 при 5ом 
:(
    Опции темы
hm8
Дата 11.8.2006, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 11.8.2006

Репутация: нет
Всего: нет



В ВБА я чайник, впервые код увидел недели 2 назад smile. Пришлось срочно что-то писать, написалось, но при выполнении листы SYS_SHEET_NAME "накапливаются" в окошке VBA Projects.Лечу просто - закрываю файл с макросом, открываю снова, но ведь это неправильно,так что просьба помочь   smile 
Кусок листинга, в котором, по замерам, растет время выполнения:
Ищет совпадение значения элемента строки и столбца, и по пересечению копирует значение на другой лист.Warea_range.count ~ 12000 ячеек
Код

Reference:=Workbooks(SYS_TABLE_NAME).Worksheets(SYS_FORM_SHEET_NAME).Range("A1")
Set WAREA_RANGE = Range(DATA_AREA_START & ":" & DATA_AREA_STOP)
Set WAREA_ROWS = Range(ROW_START_SRCH & ":" & ROW_STOP_SRCH)
Set WAREA_COLUMNS = Range(COL_START_SRCH & ":" & COL_STOP_SRCH)
For counter = 1 To WAREA_RANGE.Rows.Count
If WAREA_RANGE.Cells(counter, 1).Interior.ColorIndex <> CELL_COLOR_INDEX Then WAREA_RANGE.Rows(counter).ClearContents
Next
For counterC = 1 To WAREA_COLUMNS.Count
For counterR = 1 To WAREA_ROWS.Count
found_c = 0
found_r = 0
FORM_WAREA_COLUMNS_TEMP = WAREA_COLUMNS(1, counterC).Value
FORM_WAREA_ROWS_TEMP = WAREA_ROWS(counterR, 1).Value
Application.Goto Reference:=Workbooks(SYS_TABLE_NAME).Worksheets(SYS_SYS_SHEET_NAME).Range("A1")
If Not Range("A1" & ":" & SYS_COLUMN_END_ADR).Find(FORM_WAREA_COLUMNS_TEMP, LookIn:=xlFormulas, LookAt:=xlWhole) Is Nothing Then _
found_c = Range("A1" & ":" & SYS_COLUMN_END_ADR).Find(FORM_WAREA_COLUMNS_TEMP).Column
If Not Range("A1" & ":" & SYS_ROW_END_ADR).Find(FORM_WAREA_ROWS_TEMP, LookIn:=xlFormulas, LookAt:=xlWhole) Is Nothing Then _
found_r = Range("A1" & ":" & SYS_ROW_END_ADR).Find(FORM_WAREA_ROWS_TEMP).Row
If found_c <> 0 And found_r <> 0 Then
temp_cell = Range("A1").Cells(found_r, found_c).Value
Application.Goto Reference:=Workbooks(SYS_TABLE_NAME).Worksheets(SYS_FORM_SHEET_NAME).Range("A1")
WAREA_RANGE(counterR, counterC) = temp_cell
temp_cell = Null
End If
Next
Next


UPDATE:
Понял, подобная хрень из-за этого
Код

Application.Goto _
Reference:=Workbooks(SYS_TABLE_NAME).Worksheets(SYS_SYS_SHEET_NAME).Range("A1")
For Each qt In Worksheets(SYS_SYS_SHEET_NAME).QueryTables
    qt.Refresh
Next

Теперь, вопрос - как обновлять этот лист, но так, чтобы он не "накапливался" в ВБА(см скрин в 1ом посте)?







Это сообщение отредактировал(а) hm8 - 11.8.2006, 15:13
PM MAIL   Вверх
cardinal
Дата 11.8.2006, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99




M
cardinal
Перенесено из VB6.



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0401 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.