Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как измерить прошедшее время?

248
15 декабря 2006 года
Dmitry2064
590 / / 06.12.2006
Как измерить время выполнения макроса?
Я написал:
[COLOR="Navy"]Dim MyTime1, MyTime2
MyTime1 = Time
...
MyTime2 = Time
MsgBox MyTime2 - MyTime1
[/COLOR]
Пишет 4,1666666666732Е-04.
Это что значит? :confused:
313
15 декабря 2006 года
insane88
440 / / 13.12.2006
А ты округлять, скажем, до тысячных, не пробовал?
8.9K
16 декабря 2006 года
Залетин Виталий
71 / / 10.12.2005
Приведите результат к целому (CLng функцией либо округлите его до сотых хотябы функцией Format$(resultat,"########,##") или Format$(resultat,"00000000,00"))

или вообще считайте в целых:
Declare Function timeGetTime lib "winmm" () as Long

Sub MyMacros
dim timeStart as long

timeStart=timeGetTime
'Выполняем свои действия
...

'Теперь показываем окошко с прошедшим временем
MsgBox Cstr(timeGetTime-timeStart) & " миллисекунд"
End Sub
267
18 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Цитата: Dmitry2064
Как измерить время выполнения макроса?
Я написал:
[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")

405
18 декабря 2006 года
Dmitrii
554 / / 16.12.2004
Dmitry2064, можете также использовать функцию [color=blue]Timer()[/color]. Она измеряет время в секундах и долях секунды. Вот пример из справки:
Код:
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
248
18 декабря 2006 года
Dmitry2064
590 / / 06.12.2006
Вот спасибо за Timer. Конечно, логичнее измерять проходящее время неким таймером, а не оперировать долями суток:) .
Но интересно разобраться со всеми предоженными вариантами. Спасибо. Попробуем-с.

P.S. Самым простым оказалось использование:
[COLOR="Navy"]Msgbox Format(MyTime2 - MyTime1, "h:mm:ss"). [/COLOR]
Т.е. банально указываем формат вывода.

В др. вар-тах что-то шло не так - следствие кривизны моих рук.
248
18 декабря 2006 года
Dmitry2064
590 / / 06.12.2006
Докладываю, ради чего были все измерения времен. Оказалось, что работа моего макроса в некотором документе (даже если Ворд находится в свернутом виде) в режиме "разметка страниц" длится 17 сек. А если в начале макроса приписать выставление "Обычного режима", то уже 9 сек.! Может кому будет полезно знать...
267
18 декабря 2006 года
Cutty Sark
1.2K / / 17.10.2002
Другие варианты - это из области VB. А у тебя VBA. Так что не переживай насчёт рук. А по поводу 17 секунд и 9 - с самого начала было ясно, что основное время - на автоматическую перевёрстку всего оставшегося текста. Так что ты ему упростил задачу, тем что строки он перевёрстывал, а вот страницы - уже не надо было. И это правильно!
248
18 декабря 2006 года
Dmitry2064
590 / / 06.12.2006
Цитата: Cutty Sark
Другие варианты - это из области VB.


Вот оно в чем тело... Не будем пока выходить за рамки VBA.:)

8.9K
30 декабря 2006 года
Залетин Виталий
71 / / 10.12.2005
Цитата: Dmitry2064
Вот спасибо за Timer. Конечно, логичнее измерять проходящее время неким таймером, а не оперировать долями суток:) .
Но интересно разобраться со всеми предоженными вариантами. Спасибо. Попробуем-с.

P.S. Самым простым оказалось использование:
[COLOR="Navy"]Msgbox Format(MyTime2 - MyTime1, "h:mm:ss"). [/COLOR]
Т.е. банально указываем формат вывода.

В др. вар-тах что-то шло не так - следствие кривизны моих рук.



timeGetTime работает быстрее раз в 5 чем Timer, потому стараюсь нею и пользоваться.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог