Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2012, 09:24   #21
Rolls
Пользователь
 
Регистрация: 07.05.2010
Сообщений: 45
По умолчанию

Ладно ребят, спасибо за попытку помочь, буду юзать кривой, зато работоспособный код
Удачи всем
Rolls вне форума Ответить с цитированием
Старый 27.04.2012, 08:42   #22
Rolls
Пользователь
 
Регистрация: 07.05.2010
Сообщений: 45
По умолчанию

Одна просьба на последок :
подскажите, как вставить ProgressBar в мои циклы, а то больно не удобно смотреть на загруженность процессора и не знать процент выполнения.
Rolls вне форума Ответить с цитированием
Старый 27.04.2012, 09:17   #23
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Вот так и есть - код нужно оптимизировать, а не тормозить его ещё прогрессбарами.

Я посоветую обойтись Application.StatusBar (можно выводить не каждое значение y/i, а например десятое или сотое - так можно будет эти значения заметить, если код не совсем тормозной):

Код:
Sub add_items()
...
...
...
        For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        Application.StatusBar = "Обработка " & y & " строки прайса, обработка " & i & " строки этого листа."
            If wB.Sheets("прайс").Cells(y, 3).Value = Cells(i, 3).Value Then
                Z = 1
                Exit For
            End If
        Next
    Next
    
    Application.StatusBar = False
    'ActiveSheet.Protect: Application.ScreenUpdating = True
End Sub
И кстати - если работет очень долго и мешает шевелиться компьютеру вообще - поставьте внутрь тяжёлого цикла DoEvents - ну может не на каждом шаге, а тоже на сотом/тысячном. Так правда код чуть замедлится, но можно будет параллельно хоть что-то другое сделать.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 27.04.2012 в 09:20.
Hugo121 вне форума Ответить с цитированием
Старый 27.04.2012, 10:10   #24
Rolls
Пользователь
 
Регистрация: 07.05.2010
Сообщений: 45
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
И кстати - если работет очень долго и мешает шевелиться компьютеру вообще - поставьте внутрь тяжёлого цикла DoEvents - ну может не на каждом шаге, а тоже на сотом/тысячном. Так правда код чуть замедлится, но можно будет параллельно хоть что-то другое сделать.
Спасибо, остальные приложения работают абсолютно нормально, вообще без отличий, просто в диспетчере задач висит загрузка ЦП на 50% на обоих ядрах.
Rolls вне форума Ответить с цитированием
Старый 28.04.2012, 14:43   #25
Rolls
Пользователь
 
Регистрация: 07.05.2010
Сообщений: 45
По умолчанию

для информации :

при прохождении одного цикла (6000 строк) Application.StatusBar отлично отрабатывает, а при прохождении 6000 раз по 6000 строк, виснет и вешает весь excel. ждал больше часа (для чистоты эксперимента), excel так и непроснулся, до добавления Application.StatusBar скрипт выполнялся +- 5 минут.
Rolls вне форума Ответить с цитированием
Старый 28.04.2012, 15:20   #26
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Сообщение от Rolls Посмотреть сообщение
для информации :

при прохождении одного цикла (6000 строк) Application.StatusBar отлично отрабатывает, а при прохождении 6000 раз по 6000 строк, виснет и вешает весь excel. ждал больше часа (для чистоты эксперимента), excel так и непроснулся, до добавления Application.StatusBar скрипт выполнялся +- 5 минут.
ctrl-break нажимать пробовали? где именно зависало?
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 28.04.2012, 15:42   #27
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Я думаю, в чём-то другом причина - ни разу статусбар систему не вешал.
Чуть тормозит - это да (если каждое значение выводить), но не вешает.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.04.2012, 17:24   #28
Rolls
Пользователь
 
Регистрация: 07.05.2010
Сообщений: 45
По умолчанию

когда ставлю перед ним апостроф (закоментить), скрипт нормально отрабатывает.
Rolls вне форума Ответить с цитированием
Старый 28.04.2012, 17:28   #29
Rolls
Пользователь
 
Регистрация: 07.05.2010
Сообщений: 45
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
ctrl-break нажимать пробовали? где именно зависало?
пробовал, не помогает.
если вас интересует уонкретно на каком месте зависает, то на 25 строке одного прайса и 900 - 990 (всегда по-разному) строка второго.
Rolls вне форума Ответить с цитированием
Старый 29.04.2012, 15:05   #30
Rolls
Пользователь
 
Регистрация: 07.05.2010
Сообщений: 45
По умолчанию

Hugo121

оффтоп: Спасибо за совет "копироваться строки с русскими символами с включенной русской раскладкой". Теперь помогает во всех программах!
Rolls вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись данных в закрытую/скрытую из UserForm другой открытой книги книги. Dark Victor Microsoft Office Excel 1 12.03.2012 18:37
Автоматическое создание новой книги с экспортом данных из предыдущей книги S_Brodsky Microsoft Office Excel 5 17.02.2012 12:17
Макрос активной книги открывает книги xlsm содержащих auto_open Daren Microsoft Office Excel 0 28.01.2011 09:34
Скопировать данные из некоторых ячеек одной книги в другие книги fcunited Microsoft Office Excel 8 09.06.2010 12:14