1-й пост, но не первый раз - этот форум был неоценимым помощником в развитии моих навыков программирования на VBA за последние 3 года - большое спасибо.
Вот странная проблема, с которой я столкнулся.
Я создал шаблон на конец месяца для своей команды.В этом шаблоне хранится несколько макросов, в том числе некоторые из них активируются с помощью сочетаний клавиш.Эти активированные макросы ярлыков запускаются в других отчетах в формате CSV.
Я гарантировал, что макрос перестал работать, если бы активная рабочая книга была основной рабочей книгой, так как она выполняет много форматирования и может серьезно повредить основную рабочую книгу.
Таким образом, этот отказоустойчивый короткий код будет запускаться сотни раз в день ..... а иногда, один или два раза в месяц, Excel запутывается.Несмотря на то, что ActiveWorkbook не является ThisWorkbook, он действует так, как есть, и прерывает макрос.
'Запрещает запуск макроса в шаблоне распределения на конец месяца
Dim w As Workbook
Set w = ActiveWorkbook
If w Is ThisWorkbook Then
Exit Sub
End If
Я не могу разобраться с этим, код довольно прост и на 100% предотвращает нежелательныеповреждает основную книгу (главное на самом деле), но иногда мешает макросу форматирования запускать другие книги.
В тех редких случаях, когда это происходит, пользователь должен закрыть все книги Excel и после повторного открытия он снова будет работать нормально.: |
Это просто ошибка в Excel?Есть ли здесь что-то, чего я не учел, и следует ли этот код улучшить?Мне нравится его простота, и он на 100% предотвращает повреждения основной рабочей книги, меня просто раздражает, что Excel, похоже, запутывается из-за того, чем является / должен быть ThisWorkbook, и что я не могу это объяснить.