Sub Example()
Dim pauseTime, startTime, finishTime, totalTime
If (MsgBox("Press Yes to pause for 5 seconds", 4)) = vbYes Then
pauseTime = 5 ' Set duration.
Start = Timer ' Set start time.
Do While Timer < Start + pauseTime
DoEvents ' Yield to other processes.
Loop
Finish = Timer ' Set end time.
totalTime = Finish - Start ' Calculate total time.
MsgBox "Paused for " & totalTime & " seconds"
Else
End
End If
End Sub
Как измерить прошедшее время?
Я написал:
[COLOR="Navy"]Dim MyTime1, MyTime2
MyTime1 = Time
...
MyTime2 = Time
MsgBox MyTime2 - MyTime1[/COLOR]
Пишет 4,1666666666732Е-04.
Это что значит? :confused:
А ты округлять, скажем, до тысячных, не пробовал?
или вообще считайте в целых:
Declare Function timeGetTime lib "winmm" () as Long
Sub MyMacros
dim timeStart as long
timeStart=timeGetTime
'Выполняем свои действия
...
'Теперь показываем окошко с прошедшим временем
MsgBox Cstr(timeGetTime-timeStart) & " миллисекунд"
End Sub
Цитата: Dmitry2064
Как измерить время выполнения макроса?
Я написал:
[COLOR="Navy"]Dim MyTime1, MyTime2
MyTime1 = Time
...
MyTime2 = Time
MsgBox MyTime2 - MyTime1[/COLOR]
Пишет 4,1666666666732Е-04.
Это что значит? :confused:
Я написал:
[COLOR="Navy"]Dim MyTime1, MyTime2
MyTime1 = Time
...
MyTime2 = Time
MsgBox MyTime2 - MyTime1[/COLOR]
Пишет 4,1666666666732Е-04.
Это что значит? :confused:
Это значит, что она считала 36 секунд. Эксель, Ворд и прочие майкрософисы считают время в сутках. Чтобы получить время "по-людски", пиши так:
Msgbox Format(MyTime2 - MyTime1, "h:mm:ss")
Dmitry2064, можете также использовать функцию [color=blue]Timer()[/color]. Она измеряет время в секундах и долях секунды. Вот пример из справки:
Но интересно разобраться со всеми предоженными вариантами. Спасибо. Попробуем-с.
P.S. Самым простым оказалось использование:
[COLOR="Navy"]Msgbox Format(MyTime2 - MyTime1, "h:mm:ss"). [/COLOR]
Т.е. банально указываем формат вывода.
В др. вар-тах что-то шло не так - следствие кривизны моих рук.
Докладываю, ради чего были все измерения времен. Оказалось, что работа моего макроса в некотором документе (даже если Ворд находится в свернутом виде) в режиме "разметка страниц" длится 17 сек. А если в начале макроса приписать выставление "Обычного режима", то уже 9 сек.! Может кому будет полезно знать...
Другие варианты - это из области VB. А у тебя VBA. Так что не переживай насчёт рук. А по поводу 17 секунд и 9 - с самого начала было ясно, что основное время - на автоматическую перевёрстку всего оставшегося текста. Так что ты ему упростил задачу, тем что строки он перевёрстывал, а вот страницы - уже не надо было. И это правильно!
Цитата: Cutty Sark
Другие варианты - это из области VB.
Вот оно в чем тело... Не будем пока выходить за рамки VBA.:)
Цитата: Dmitry2064
Вот спасибо за Timer. Конечно, логичнее измерять проходящее время неким таймером, а не оперировать долями суток:) .
Но интересно разобраться со всеми предоженными вариантами. Спасибо. Попробуем-с.
P.S. Самым простым оказалось использование:
[COLOR="Navy"]Msgbox Format(MyTime2 - MyTime1, "h:mm:ss"). [/COLOR]
Т.е. банально указываем формат вывода.
В др. вар-тах что-то шло не так - следствие кривизны моих рук.
Но интересно разобраться со всеми предоженными вариантами. Спасибо. Попробуем-с.
P.S. Самым простым оказалось использование:
[COLOR="Navy"]Msgbox Format(MyTime2 - MyTime1, "h:mm:ss"). [/COLOR]
Т.е. банально указываем формат вывода.
В др. вар-тах что-то шло не так - следствие кривизны моих рук.
timeGetTime работает быстрее раз в 5 чем Timer, потому стараюсь нею и пользоваться.