Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2016, 22:08   #1
Евгений Таб
Форумчанин
 
Аватар для Евгений Таб
 
Регистрация: 09.08.2013
Сообщений: 202
По умолчанию Время работы макроса (несколько процедур)

Добрый день, товарищи

Всегда пользовался таким макросом для подсчета времени его выполнения.

PHP код:
Sub test()
    
Timer
    
For 1 To 30000000Next
    MsgBox 
"Обработка данных продолжалась  " Timer " сек."vbInformation
End Sub 
Все более чем устраивало.

Когда столкнулся с более сложными макросами, данное решение не подходит. Сложность заключается в том, что я использую запуск одного макроса, далее вызов другого, и так 2 раза. Т.е мне нужно подсчитать суммарное количество работы нескольких макросов запущенных "по цепочке", объединить их не подразумевается.

Как решить данную проблему максимально просто? без API желательно. Пытался играться с переменными, но что-то результата ноль считает только время выполнения первого макроса.

Заранее огромное спасибо
Евгений Таб вне форума Ответить с цитированием
Старый 25.05.2016, 22:35   #2
gling
Форумчанин
 
Регистрация: 23.01.2010
Сообщений: 261
По умолчанию

Что то не понятно.
Цитата:
далее вызов другого,
в ручную или макросом? Хотите сцепку проверить
Код:
Sub test()
    t = Timer
    'For i = 1 To 30000000: Next
    Макрос1
    Макрос2
    ............
    Макрос10
    MsgBox "Обработка данных продолжалась  " & Timer - t & " сек.", vbInformation
End Sub
Или так не получается?
gling вне форума Ответить с цитированием
Старый 25.05.2016, 22:51   #3
Евгений Таб
Форумчанин
 
Аватар для Евгений Таб
 
Регистрация: 09.08.2013
Сообщений: 202
По умолчанию

Вызов макроса осуществляется из макроса.

Первый макрос открывает второй, второй третий, третий четвертый.

Способ который вы показали к сожалению не подходит.
Евгений Таб вне форума Ответить с цитированием
Старый 25.05.2016, 23:36   #4
gling
Форумчанин
 
Регистрация: 23.01.2010
Сообщений: 261
По умолчанию

Первый макрос закрывается после вызова второго? Мне не понятно, для проверки то наверно можно собрать их в кучу. Или назначьте t публичной переменной, в первой процедуре присвойте значение, в последней выводите информацию о времени от начала до конца. Можно в конце каждой процедуры поставить MsgBox. Или тоже не то?
gling вне форума Ответить с цитированием
Старый 26.05.2016, 06:55   #5
Евгений Таб
Форумчанин
 
Аватар для Евгений Таб
 
Регистрация: 09.08.2013
Сообщений: 202
По умолчанию

Получилось обработать с помощью НЕ публичной переменной, как вы и писали.

PHP код:
Sub test()
    
Timer
    
'For i = 1 To 30000000: Next
    Макрос1
    Макрос2
    ............
    Макрос10 ' 
тут лежит UserForm
    MsgBox 
"Обработка данных продолжалась  " Timer " сек."vbInformation
End Sub 
Как мне теперь вывести переменную t в UserForm, которая запускается из макроса10? Здесь поможет публичная переменная? Как ее правильно обьявить?
Евгений Таб вне форума Ответить с цитированием
Старый 26.05.2016, 07:22   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

так и обьявите
Dim t
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 26.05.2016, 07:44   #7
Евгений Таб
Форумчанин
 
Аватар для Евгений Таб
 
Регистрация: 09.08.2013
Сообщений: 202
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
объявите
Обьявил,

Sub test()
Dim t
t = Timer
'For i = 1 To 30000000: Next
Макрос1
Макрос2
............
Макрос10 ' тут лежит UserForm
MsgBox "Обработка данных продолжалась " & Timer - t & " сек.", vbInformation
End Sub


в юзер форме прописал ::

PHP код:
Label11 
Но данные не записываются
Евгений Таб вне форума Ответить с цитированием
Старый 26.05.2016, 08:23   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Sub test()
Dim t
вот эти строки поменяйте местами.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 26.05.2016, 08:55   #9
Евгений Таб
Форумчанин
 
Аватар для Евгений Таб
 
Регистрация: 09.08.2013
Сообщений: 202
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Sub test()
Dim t
вот эти строки поменяйте местами.

Поменял, но количество секунд не прилетает в юзерформ...

PHP код:
Dim t

Sub GO
()

' Dim t
t = Int(Timer)
   ' 
For 1 To 30000000Next
    

Application
.Run "STEP_1"
Application.Run "HEADER_transfer"
Application.Run "ITEM_transfer"
Application.Run "LOOPFINALREPORT" ' тут лежит команда открытия юзер форм 
Юзер форма :
PHP код:
Label11 
Евгений Таб вне форума Ответить с цитированием
Старый 26.05.2016, 09:41   #10
Евгений Таб
Форумчанин
 
Аватар для Евгений Таб
 
Регистрация: 09.08.2013
Сообщений: 202
По умолчанию

Естественно юзер форма инициализирована
Евгений Таб вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создать несколько процедур на ассемблере Дарио Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 11.01.2014 22:32
Компонент TADOStoredProc. Несколько хранимых процедур. yasic БД в Delphi 6 24.01.2012 19:07
Несколько процедур сразу Progs1024 Паскаль, Turbo Pascal, PascalABC.NET 4 10.01.2010 15:27
Несколько непонятных процедур в WebBrowser celovec Работа с сетью в Delphi 1 12.11.2008 16:01
[Pascal]Двусвязный кольцевой список, несколько процедур Fuaran8989 Фриланс 1 25.05.2008 20:22