Удалить разбитые именованные диапазоны в Excel с помощью VBA
Часть более крупного макроса включает в себя обнаружение и удаление именованных диапазонов, которые были непреднамеренно дублированы при перемещении / копировании листа в основную рабочую книгу. Эти "нарушенные" именованные диапазоны указываются в столбце "Значение" в менеджере имен, где отображается "#REF!".
Я попытался удалить эти именованные диапазоны, используя следующий макрос:
Sub DeleteBrokenNamedRanges()
Dim NR As Name
Dim numberDeleted As Variant
numberDeleted = 0
For Each NR In ActiveWorkbook.Names
If InStr(NR.Value, "#REF!") > 0 Then
NR.Delete
numberDeleted = numberDeleted + 1
End If
Next
MsgBox ("A total of " & numberDeleted & " broken Named Ranges deleted!")
End Sub
К сожалению, возвращаемое значение равно 0, и именованные диапазоны не были удалены. Я играл с защитой / снятием защиты и некоторыми параметрами InStr
, но ничего не сработало.
Примечание стороны - возвращение NR.Value
это не #REF! или код ошибки, как и ожидалось, но на самом деле =C:\Blahblah\blarg.xls
путь вместо
Любая помощь по этому вопросу будет принята с благодарностью, спасибо!
1 ответ
Я не думаю, что коды ошибок существуют как значения диапазона (не то, чтобы я был в этом авторитет). Если допустимые диапазоны имели ошибки, отличные от #REF! это может быть проблемой, но я думаю, что-то вроде
IsError(NR.RefersToRange)
Может быть, это хороший способ проверить, нет ли названных диапазонов?