Может ли VBA удалить именованные диапазоны на основе значения RefersTo?

549
RocketGoal

Я очищаю раздутую книгу Excel и пытаюсь массово удалить именованные диапазоны, которые ссылаются на книги на чьем-то диске «C». Их очень много. И они не используются в этой книге.

'C: \ blahblah \ ... \ ... \ ... \ ... \ ... \ [WorkBookName.xls] Лист1'! $ E $ 28

Приведенный ниже код помог мне удалить именованные диапазоны, где их имя содержит «значок» (например).

Однако мне действительно нужно удалить диапазон, когда он содержит путь, как показано выше. Принимая во внимание, что имя Книги или Листа также может измениться, но диск останется прежним.

Sub deleteNamedRangesSpecific() For Each NR In ActiveWorkbook.Names If NR.NameLocal Like "*" & "icon" & "*" Then NR.delete Next End Sub 

Любые идеи, как удалить в соответствии с самим диапазоном, а не имя диапазона?

Благодарю.

Майк.

1
`Если ... Тогда Range (nr) .ClearContents`? Или `.Delete`, если вы хотите удалить ячейки / строки BruceWayne 6 лет назад 0

1 ответ на вопрос

1
tjejojyj

Вам просто нужно передать NR.RefersToвариант в строковую переменную, чтобы вы могли использовать Likeфункцию.

Этот код работает для меня. Очевидно, отредактировать, $E$28чтобы удовлетворить.

Option Explicit Sub deleteNamedRangesSpecific() Dim NR As Name Dim compare_string As String For Each NR In ActiveWorkbook.Names compare_string = NR.RefersTo If compare_string Like "*" & "$E$28" & "*" Then NR.Delete Next End Sub 
Хороший ответ, спасибо и добро пожаловать в Superuser wizlog 6 лет назад 0

Похожие вопросы