Страницы: 1
RSS
Как правильно внедрить в код макроса прогресс бар
 
Код
Sub Размножить()
    Dim lngCalc As Long
    Dim n&
    n = Val(InputBox("n ="))
     
    Application.ScreenUpdating = False
    lngCalc = Application.Calculation
    Application.Calculation = xlCalculationManual
    Application.DisplayAlerts = False
     
    Range("g1:h1").Copy Range("g2:h2").Resize(1 * n)
     
    Application.ScreenUpdating = True
    Application.Calculation = lngCalc
    Application.DisplayAlerts = True
    MsgBox "Готово!", vbInformation
End Sub
 
В этот никак. Смысла нет. Прогресс-бары внедряются в циклы, а у Вас только одна рабочая строка.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий Щербаков, можно написать и через цикл, но тогда увеличится время работы макроса.
 
kolevchuk, ссыль
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
какой прогрессбар вы рассчитываете увидеть для этого макроса?)
 
kolevchuk, какой смысл в прогрессбаре в Вашем случае? Всего одна операция, Вы только моргнуть успеете.
Цитата
kolevchuk написал:
увеличится время работы макроса
А прогрессбар всегда будет увеличивать время.
 
Dima S, хотя бы, количество пройденных строк.
 
Цитата
Юрий М написал:
Вы только моргнуть успеете
Не, не успеет  :D
"Все гениальное просто, а все простое гениально!!!"
 
Юрий М, операция повторяется до 1 000 000 раз.
 
Не вижу этого в коде.
 
Извините великодушно, а какой смысл в прогрессбаре после этой инструкции:
Код
   Application.ScreenUpdating = False
??  :sceptic:
Кому решение нужно - тот пример и рисует.
 
Цитата
kolevchuk написал:
операция повторяется до 1 000 000 раз
какая именно? Я, видимо, слишком мало смыслю в программирование, чтобы увидеть эти повторы. Носом не ткнете?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Пытливый, в исходном коде она нужна, с прогресс баром нет, к чему этот вопрос?
 
Дмитрий Щербаков,
Код
Range("g1:h1").Copy Range("g2:h2").Resize(1 * n)
 
Цитата
kolevchuk написал:
к чему этот вопрос?
А к тому, что Вы показываете код, к которому хотите прикрутить прогрессбар.
 
kolevchuk,чтобы увидеть какая строка обрабатывается и для прогресс-бара нужен цикл.
 
для того чтобы показать прогресс - нужно знать время выполнения операции или количество циклов.
тогда текущий прогресс = пройдено времени(циклов)/общее время(к-во циклов)*100%.
в вашем случае если говорить о времени - общее неизвестно, можете отобразить только пройденное время.
если о количестве скопированных строк - неизвестно сколько уже скопировано в данный момент.
Далее у вас используется Application.ScreenUpdating, что не даст обновить информацию о статусе, а если отключить - замедлит выполнение операции.
Короче - в вашем случае статусбар не имеет смысла.
Разве что проведите тестовое копирование, замерьте время и перед началом сделайте MsgBox Application.StatusBar = "Операция займет приблизительно 10 минут, можете сходить попить кофе" :)
Изменено: Dima S - 05.04.2018 12:44:38
 
Anchoret, посоветуйте, пожалуйста, как это сделать в цикле.
 
А это уже вопрос не по теме.
 
Цитата
kolevchuk написал:
как это сделать в цикле
читали бы ответы — не возникло бы вопроса… #4

Господа — вы должны это видеть  :D добавлю в анекдоты))
Изменено: Jack Famous - 05.04.2018 12:53:10
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Зачем зацикливать один и тот же код, в чем идея? Посмотреть как работает прогресс бар? Возьмите Уокенбаха, сделайте как в книге написано и наслаждайтесь  :D
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
kolevchuk написал:
как это сделать в цикле
для начала СДЕЛАЙТЕ ЦИКЛ. Пока кроме Вам никто не понимает что Вы вообще хотите в цикле сделать и главное - зачем?
Вот Вам примеры - выбирайте: Отобразить процесс выполнения кода
Изменено: Дмитрий Щербаков - 05.04.2018 13:15:39
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх