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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2009, 22:00   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Log работы макроса

Как создать Log работы макроса в котором было бы видно "цепочку" выполнения, я знаю, что мона через Ф8, но если цикл от 0 до 1700, замучаешься щелкать. Как такое обходить, не знаю.

Может еще есть какой то способ для отладки макроса?
valerij вне форума Ответить с цитированием
Старый 02.03.2009, 22:14   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А куда тебе надо выводить информацию?
На лист, в текстовый файл, в окно отладки?

Попробуй такой вариант:
Код:
Sub МойОгромныйМакросСБольшимиЦиклами()
    ДобавитьЗаписьВЛог "Только что запустился МойОгромныйМакросСБольшимиЦиклами"
    For i = 1 To 1700
        ' здесь мы что-то делаем
        If i Mod 30 = 1 Then ДобавитьЗаписьВЛог "Выполняется цикл - обрабатывается строка " & i
    Next
    ДобавитьЗаписьВЛог "МойОгромныйМакросСБольшимиЦиклами успешно завершил свою работу"
End Sub

Sub ДобавитьЗаписьВЛог(ByVal TXT As String)
    Worksheets("Лист1").Cells(Rows.Count, "A").End(xlUp).Offset(1) = TXT
End Sub
Запусти первый макрос, предварительно заменив во втором имя листа (создай в файле ещё один лист специально для логов, и имя этого листа пропиши в макрос)

В первом столбце листа будут записи типа:
Цитата:
Только что запустился МойОгромныйМакросСБольшимиЦиклами
Выполняется цикл - обрабатывается строка 1
Выполняется цикл - обрабатывается строка 31
Выполняется цикл - обрабатывается строка 61
...
Можно выводить информацию в окно Immediate:
(отображается после нажатия Ctrl + G)
Код:
Sub МойОгромныйМакросСБольшимиЦиклами2()
    Debug.Print "Только что запустился МойОгромныйМакросСБольшимиЦиклами"
    For i = 1 To 1700
        ' здесь мы что-то делаем
        If i Mod 30 = 1 Then Debug.Print "Выполняется цикл - обрабатывается строка " & i
    Next
    Debug.Print "МойОгромныйМакросСБольшимиЦиклами успешно завершил свою работу"
End Sub
В макросе сделан вывод только каждой 30-й строки.
Если надо все строки, убери из макроса If i Mod 30 = 1 Then
EducatedFool вне форума Ответить с цитированием
Старый 02.03.2009, 22:38   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
А куда тебе надо выводить информацию?
На лист, в текстовый файл, в окно отладки?
Затрудняюсь, сказать, наверное в текстовый файл.
А де это окно отладки, понял, тока как им пользоваться?

Последний раз редактировалось valerij; 02.03.2009 в 22:59.
valerij вне форума Ответить с цитированием
Старый 03.03.2009, 00:04   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
Может еще есть какой то способ для отладки макроса?
Добавляем в окно просмотра переменную,
В открывшемся диалоге "Add Watch" в группе "Watch type" ставим "Break When Value Is True"(остановить, когда значение истина) или "Break When Value Changes" (Остановить, когда значение изменилось). Если в цикле не на что реагировать, необходимо добавить такую строку, вычислить специальную переменную...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Визуализация работы макроса Gawwws Microsoft Office Excel 24 01.09.2010 18:16
Визуализация работы макроса zander Microsoft Office Excel 7 15.02.2009 01:09
Запуск макроса с параметрами из другого макроса Saladin Microsoft Office Excel 2 19.01.2009 09:43
log(abs(cos(x))) DeFace Общие вопросы C/C++ 3 28.09.2008 17:32
.log файлы TyoshA Общие вопросы Delphi 12 25.03.2008 08:31