Case 1:
Допустим, у Вас есть Excel-овская рабочая книга, у которой есть VBA-обработчик события Workbook_BeforeSave, делающий нечто очень специфическое, а вовсе не сохранение рабочей книги. Ваша задача - изменить код этого обработчика. Чуете подвох? Вы внесли изменения и, ничего не подозревая, жмёте пиктограмму с изображением дискетки и... Правильно! попадаете в собственный же обработчик, который начинает делать уже упомянутое нечто очень специфическое.
Самое время вспомнить Чернышевского и задаться извечным вопросом "Что делать?". Лично я придумал следующий танец с бубном:
- Для начала поставить бряку на первый оператор кода обработчика, чтоб иметь возможность сразу же прервать нечто очень специфическое, если оно вдруг начнётся.
- Переименовать обработчик Workbook_BeforeSave, чтобы он перестал быть обработчиком - ну, например, в Workbook_BeforeSave1 - и спокойно сохранить рабочую книгу.
- Переименовать обратно Workbook_BeforeSave1 в Workbook_BeforeSave и сразу же, пока коварный Excel не сообразил, что же Вы сотворили, нажать заветную кнопочку с изображение дискетки.
P. S. Если же Вы промедлите и, к примеру, сначала переведёте фокус в другое окошко, то мудрый Excel обо всём догадается и при попытке сохранения всё равно запустит Ваш обработчик.
Case 2:
А теперь представим, что у Вас есть обработчик Workbook_Open, в котором выполняется некоторая инициализация рабочей книги. Вы видите, что при открытии рабочая книга не инициализируется. Начинаете думать "почему?". В результате размышлений приходите к выводу, что скорее всего в коде инициализации выскакивает исключение, но мудрый Excel, полагая, что пользователя лишний раз пугать не надо, ничего не сообщает, а просто прерывает процесс инициализации. У Вас возникает вполне естественное желание пробежаться по обработчику Workbook_Open отладчиком, для чего Вы хотите поставить в нём бряку. Но внезапно осознаёте, что чтобы поставить бряку в коде этого обрабтчика Вам нужно сначала открыть рабочую книгу, но ведь тогда от бряки толку будет очень не много.
Придуманный мною танец с бубном на этот случай гораздо проще чем предыдущий:
- Вы ставите в начало Workbook_Open первым оператором MsgBox "Fuck!", сохраняете и закрываете рабочую книгу.
- Вновь открываете рабочую книгу и при появлении окошка с неприличным словом и кнопкой OK нажимаете магическую комбинацию клавиш Ctrl+Break. И, о чудо! Вываливаетесь в отладчик на оператор, следующий за MsgBox "Fuck!" - то есть в самое начало обработчика Workbook_Open.
- Когда же Вы вдоволь наотлаживаетесь обработчиком - просто убираете добавленную строчку, чтоб она не удивляла клиента.
P. S. Есть вариация этого танца, когда вместо MsgBox "Fuck!" вставляется оператор MsgBox "Press Ctrl+Break please...", но его набирать почти в два раза дольше :)