Отладка через циклы - PullRequest
       2

Отладка через циклы

1 голос
/ 05 апреля 2019

Недавно я нашел прекрасный инструмент для отладки кода, который помогает найти ошибку и улучшить мой макрос. Я, однако, застрял с циклом, который отладка не хочет проходить. Другими словами, я хотел бы понять:

  1. как я могу отлаживать каждую строку кода,
  2. отладка 1-> n раз (n - конечное число раз) цикла
  3. Затем пройдите цикл и отладьте оставшуюся часть кода.

Я не могу найти способ отладки циклов. Может ли кто-нибудь попытаться объяснить мне, в общем, самые важные вещи функции отладки?

Редактировать: вставленный пример кода

Я все еще не могу пройти мимо Nexts: если я нажму и удерживаю клавишу F8, код выполняется вечно, никогда не вставляя цикл. Я нашел обходной путь, который заключается в перетаскивании выделенного строчного кода F8 вниз в нужное место, но это раздражает, когда код длинный; также, если код ломается, мне нужно каждый раз перерисовывать его вручную. Я хотел бы использовать способ, позволяющий, скажем, запускать отладку только со строки 40 до 60 не раньше, не после.

Пример кода

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

Вот несколько советов по отладке в VBA:

  • С F5 вы выполняете код до конца Sub или Function
  • С F8 вы выполняете одну строку кода.
  • Нажав на строку или нажав F9 , вы устанавливаете точку останова.

С помощью этих простых советов вы можете делать практически все с помощью инструмента отладки.

Если вы хотите быстро выйти из цикла, просто установите точку останова на ближайшей строке кода после, а затем нажмите F5 , например:

enter image description here

1 голос
/ 05 апреля 2019

Вы можете использовать F8 для пошагового перемещения кода по строке

. Вы можете использовать точки останова, которые можно вставить, нажав на строку, которую вы хотите разбить, т.е.Выполните цикл и нажмите F9

enter image description here

, или очень недооцененная функция - Debug.Assert.Вы можете использовать это, чтобы написать выражение, с которым оно будет проверяться и которое будет взломано, когда оно оценивается как False, например,

Debug.Assert i < 50

Выше приведено значение для любого значения, которое больше 49.

enter image description here

Не забудьте удалить / обработать это в своей рабочей копии, хотя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...