Страницы: 1
RSS
Пошаговая отладка кода VBA
 
А вот такой вопрос возник, если кто знает - пошаговое тестирование кода из модуля листа вообще никак не возможно?..
Опять какая-то явно логическая ошибка и непонятно, как искать
В полете голова - важнее крыльев
 
Поставить точку останова (мышью на левом бордюре окна).
Или написать в коде stop.
Ну и вызвать событие.
Изменено: Hugo - 13.05.2014 18:20:13
 
F8
 
Не работает F8 в коде процедуры листа, там только событие запускать вроде
В полете голова - важнее крыльев
 
А у меня работает.
Курсор вставьте в процедуру и нажмите f8
 
Hugo, похоже телепат. Я пока нет  :)
Я так подозреваю речь идет о событиях листа или книги ?
Ключевое слово"событий листа"
Если так, то Hugo все ответил.
Изменено: B.Key - 13.05.2014 21:51:18
 
Цитата
B.Key пишет:
Курсор вставьте в процедуру и нажмите f8
Где у вас работает?
В такой процедуре??  Вы в каком-то обычном модуле проверяете наверное
Код
Private Sub Worksheet_Change(ByVal Target As Range)
В полете голова - важнее крыльев
 
Цитата
Li$$@ пишет:
Вы в каком-то обычном модуле проверяете наверное
И в "обычном" (стандартном), и в модуле листа можно запускать по F8, если это не событийная процедура, как в Вашем случае.
 
Как вариант используйте debug.print и debut.assert
Изменено: Все_просто - 13.05.2014 22:36:26
С уважением,
Федор/Все_просто
 
А чем Debug.Print  поможет? Вопрос ведь о ПОШАГОВОМ прогоне кода.
 
Если у Вас процедура обработки события, имеющая аргументы запуска, как, например,
Цитата
Private Sub Worksheet_Change(ByVal Target As Range)
имеющая аргументом Target , то она, действительно, по F8 не запустится.
Что нужно сделать, чтобы её отладить по шагам, Вам уже посоветовали:
Цитата
Hugo пишет:
Поставить точку останова (мышью на левом бордюре окна).
Или написать в коде stop.
Ну и вызвать событие.
после вызова события (т.е. ввода чего-нибудь в любую ячейку листа) Вы вылетите в режим отладки VBE с остановкой исполнения процедуры в указанном Вами месте. А далее уже сможете идти по шагам с помощью F8
Изменено: Alex_ST - 15.05.2014 17:24:13
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Ещё вариант:

Код
Sub tt()
    Worksheet_SelectionChange Range("A1")
    Worksheet_SelectionChange Range("c1")
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = Range("C1").Address Then
        MsgBox 1
    End If
End Sub
 
 
Если Вы пытаетесь поставть break point на строке объявления переменных, то она ставиться не будет.
Изменено: Johny - 14.05.2014 10:04:57
There is no knowledge that is not power
Страницы: 1
Читают тему
Наверх