Почему я получаю сообщение об ошибке 1004, когда перебираю ActiveWorkbook.Names и пытаюсь удалить именованные диапазоны с помощью VBA? - PullRequest
2 голосов
/ 23 сентября 2019

У меня есть макрос, который должен удалить все именованные диапазоны в моей книге.Каждый раз, когда я запускаю его, я получаю ошибку 1004 во время выполнения, если я не включаю обработчик ошибок.Когда я включаю обработчик ошибок, он работает и фактически удаляет все именованные диапазоны.Почему это происходит?Для контекста, код, который я показываю ниже, является выдержкой из подпункта.

Это работает и не выдает ошибку:

Dim nm As Name
Dim wb3 As Workbook
Set wb3 = ActiveWorkbook

For Each nm In wb3.Names
    On Error GoTo Skip
    nm.Delete
Skip:
    On Error GoTo 0
Next

Это дает ошибку 1004:

Dim nm As Name
Dim wb3 As Workbook
Set wb3 = ActiveWorkbook

For Each nm In wb3.Names
    nm.Delete
Next

Ошибка возникает при нм. Удалить

1 Ответ

0 голосов
/ 23 сентября 2019

Проблема заключалась в том, что Excel пытался удалить некоторые созданные им функции, которые начинались с _xlfn.

Следующий код работал без ошибок:

Dim nm As Name
Dim wb3 As Workbook
Set wb3 = ActiveWorkbook

For Each nm In wb3.Names
    If Not Left(nm.Name, 6) = "_xlfn." Then
        nm.Delete
    End If
Next
...