Страницы: 1
RSS
Время работы макроса
 
С помощью какого кода, можно вычислить время выполнения макроса?
 
Sub Worktime()  
a=timer  
...  
...  
...  
...  
...  
MsgBox timer-a  
End sub
 
А более детально можно расписать (на пальцах..)  
 
Имеется несколько макросов выполняющихся подряд. Хотелось бы фиксировать время исполнения каждого макроса (в минутах) с записыванием полученного значения в определенную строку на листе.  
Подскажите, пожалуйста, более детально как написать такой макрос
-
 
Уже написали.  
В переменную заносится время данного момента, работает макрос, после его отработки выводится сообщение о разности момента окончания работы и переменной, т.е. чистое время работы процедуры.  
Если работает несколько процедур, вместо MsgBox вставьте запись времени куда-либо (можно тоже в переменную), после этой строки опять    
a=timer  
макрос1  
b=timer-a  
a=timer  
макрос2  
c=timer-a
 
Спасибо, что ответили.., но могли бы Вы еще подсказать как ФИКСИРОВАТЬ результаты работы в строке листа ?  
В вашем макросе выскакивают отдельные иконки с результатом работы таймера
-
 
Я имел в виду фиксировать время исполнения КАЖДОГО макроса в отдельной ячейки строки..
-
 
заведите глобальную переменную уровня модуля:  
Public tRow&  
 
в начале каждого макроса пишем:  
a=timer  
 
в конце:  
tRow=tRow+1: sheets("Лист1").cells(trow,1).value=timer-a
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
на каком нибудь простеньком примере (макросе) можете это расписать ? я не знаток макросов..    
И где в  tRow=tRow+1: sheets("Лист1").cells(trow,1).value=timer-a    указывается  в какой именно ячейке листа фиксируется результат таймера ?
-
 
{quote}{login=skif}{date=20.08.2012 11:13}{thema=Re: }{post}я не знаток макросов.{/post}{/quote}  
коллега!!!  
я вот тоже не ядерный физик, но на днях появилась аозможность порулить большим андронным коллайдером - почему бы и нет?  
так что извините - некогда: сейчас на соседнем форуме по черным дырам ответа дождусь и вылетать надо.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
На нет и суда нет..  Понимаю Вас ! :) терпение нужно райское !  
 
;) НО на написание вашего ответа-комментария вероятно ушло столько же времени сколько и ответ на вопрос где в tRow=tRow+1: sheets("Лист1").cells(trow,1).value=timer-a указывается в какой именно ячейке листа фиксируется результат таймера ?
-
 
cells(trow,1)
 
А ТС в теме так и не отписался... С 2010 года. Сейчас опять создает темы.  
skif, а Вы не обижайтесь. Это не курсы для начинающих по информатике. И не автоответчик. Предполагается, что человек, пришедший на форум программистов, хоть какие-то базовые знания должен иметь. И обучать Вас онлайн азам на форуме никто желанием не горит. В правилах есть ссылки на литературу, копилку, приемы. Имейте и Вы совесть, не отрывайте людей по пустякам.
Я сам - дурнее всякого примера! ...
 
ну так мне не обижаться или совесть иметь ??  :)  
шучу.  
 
как я написал уже, что ВСЕ понимаю..  и наличия времени.. и желания...    
Сам такой же.  
А степень "пустячности" определяется навыком и умением.Все мы знаем, что то лучше, что то хуже..  
 
Я очень благодарен разработчику сайта и умельцам, которые поддерживают его на "плаву". Нужное и полезное дело делают совместными усилиями.
-
 
С моим вопросом я с горем пополам разобрался вроде бы. Не скажу, что полностью закрыл свои вопросы, но большую часть реализовал.  
 
И за такую помощь ОГРОМНАЯ БЛАГОДАРНОСТЬ !    
уже не первый раз выручаете..
-
 
Если я все верно понял, то простейшим макросом-примером будет следующий :  
 
Sub ОбщийЗапуск()  
Call Protect_for_User_Non_for_VBA  
a = Timer  
Call Макрос_1  
trow = trow + 1: Sheets("Лист 1").Cells(trow, 1).Value = Timer - a  
a = Timer  
Call макрос_2  
trow = trow + 1: Sheets("Лист 1").Cells(trow, 1).Value = Timer - a  
a = Timer  
Call Макрос_3  
trow = trow + 1: Sheets("Лист 1").Cells(trow, 1).Value = Timer - a  
End Sub  
 
макросы исполняются друг за другом, а в столбце А:А отображаются времена исполнения.
-
 
ну в общем всё правильно.  
а вы попробуйте запустить - должно получиться :)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
как Ваш андронный коллайдер ? ;) получилось порулить ??    
 
Да. С Вашей помощью, все работает.  Спасибо !  
Но вот как записать значения в строку, так и не додумался (не нашел).
-
 
поменяйте местами - не cells(trow,1), а cells(1,trow)  
как искать (совет): в коде курсором встали на слово cells и нажали F1  
 
пс. форум по черным дырам сам оказался черной дырой. Планета лучше :)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Учту. Спасибо !  
 
Может для ОКОНЧАТЕЛЬНОГО уяснения :) подскажите как результаты в заданные (конкретные) ячейки заносить ?  
а то увеличивающиеся последовательно цифры в столбце УЖАСАЮТ разрядностью :)  
 
так хоть их равномерно по листу можно распределить, чтоб сразу в глаза не бросались..    :)
-
 
cells(1,1),Range("A1"),[A1] = a
Все, что слева - это ячейка А1.
Страницы: 1
Читают тему
Наверх