Kann VBA benannte Bereiche basierend auf dem RefersTo-Wert löschen?

613
RocketGoal

Ich bereinige eine aufgeblähte Excel-Arbeitsmappe und versuche, benannte Bereiche, die sich auf Arbeitsmappen auf einem C-Laufwerk beziehen, massenweise zu löschen. Da sind viele von denen. Sie werden in dieser Arbeitsmappe nicht verwendet.

'C: \ blahblah \ ... \ ... \ ... \ ... \ ... \ [WorkBookName.xls] Sheet1'! $ E $ 28

Der folgende Code hat mir dabei geholfen, benannte Bereiche zu löschen, deren Name beispielsweise 'icon' enthält.

Ich muss den Bereich jedoch wirklich löschen, wenn er wie oben gezeigt einen Pfad enthält. Bedenken Sie, dass sich auch der Name der Arbeitsmappe oder des Blattes ändern kann , das Laufwerk jedoch gleich bleibt.

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

Irgendwelche Ideen, wie man entsprechend dem Bereich selbst löscht, nicht den Namen des Bereichs?

Vielen Dank.

Mike.

1
"Wenn ... Dann Range (nr) .ClearContents"? Oder `.Delete`, wenn Sie die Zellen / Zeilen entfernen möchten BruceWayne vor 6 Jahren 0

1 Antwort auf die Frage

1
tjejojyj

Sie müssen die NR.RefersToVariante nur an eine String-Typ-Variable übergeben, damit Sie die LikeFunktion verwenden können.

Dieser Code funktioniert für mich. Offensichtlich bearbeiten $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 
Schöne Antwort, danke und willkommen bei Superuser wizlog vor 6 Jahren 0