Service M Forum
Понедельник, 05.12.2016, 23:42
START-SM МИГРАЦИЯ ENGLISH INSURANCE ЗАРАБОТОК X1-MSB МАГАЗИН ФОРУМ АЗАРТ INFO-СТОК $ RUSBUX $
ФОРУМ САЙТА START-SM.AT.UA
Регистрация Новые сообщения Правила форума Участники Поиск ВХОД RSS
Страница 1 из 11
Форум » EDUCATION » Excel VBA » Timer - Таймер (VBA)
Timer - Таймер
start-sm Дата: Понедельник, 04.06.2012, 02:11 | Сообщение # 1
Admin
Administrator
Posts: 574
Reputation: 3
Status: Offline
* Как посчитать время, которое, например, тратит компьютер на выполение программы: Time + АЛГОРИТМ

Пример:

Sub Timer()

Dim starttime As Double ''''''''''
Dim endtime As Double ''''''''''
Dim xtime As Double ''''''''''
Dim x As Long

Application.ScreenUpdating = True ''''''''''''

Range("A1").Value = Time

starttime = Time ''''''''''''

Do Until x > 5000
Cells(2, 1).Select
Cells(2, 1).Value = x
x = x + 1
Loop

endtime = Time ''''''''''''''
xtime = (endtime - starttime) * 86400 ''''''''''''''''

'Application.ScreenUpdating = True

MsgBox ("This operation ran for " & xtime & " seconds") ''''''''''''''

End Sub

Пояснение:

1. Открываем подпрограмму с условным названием Timer без параметров ().
2 - 5. Определяем необходимые переменные.
6. С помощью свойства Application.ScreenUpdating = True мы можем выбрать, отображать каждое изменение, происходящее по мере выполнения программы на экране (True) или не отображать, а лишь в конце выполненияпрограммы показать конечный результат (False). См.п.16. Не отображении каждого изменения на экране программа будет работать гораздо (в 5-10 раз) медленнее.
7. Установим для разнообразия значение текущего времени начала выполнения программы Time и запишем это значение в клетку "А1"
8. Запишем это же время в переменную starttime.
9 - 13. В этом месте кода мы должны поместить основную часть программы, ту, скорость выполнения которой мы будем измерять. Например, цикл увеличения переменной "х" от 0 до 5000 и записи каждого этого значения в клетку 2-й строки 1-го столбца.
14. Запишем текущее время завершения вышеописанного цикла в переменную endtime
15. А теперь вычисляем разницу во времени между началом и концом выполнения основной части программы. Зачем умножать на 86400? Для того, чтобы полученное значения было в секундах. Иначе мы получим значение доли суток (0.5 - это 12 часов; 0.1 - это 2,4 часа и т.д.), т.к. наш таймер именно в таком формате считает время. А в сутках как раз именно 86400 секунд.
16. Если в п.6 значение Application.ScreenUpdating = True, чтогда строку №16 можно вообще не писать. Если в п.6. Application.ScreenUpdating = False, тогда необходимо обязательно в строке, идущей за основной частью программы, написать Application.ScreenUpdating = True, иначе результат выполнения программы на экране не отобразится.
17. Теперь создаем выпадающую табличку сообщения такого формата: "This operation ran for " ПЛЮС переменная из п.15 ПЛЮС "seconds"
18. Закрываем подпрограмму.
 
Форум » EDUCATION » Excel VBA » Timer - Таймер (VBA)
Страница 1 из 11
Поиск:

    Copyright MyCorp © 2016 Бесплатный конструктор сайтов - uCoz