Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bereichsnamen mit VBA löschen

Forumthread: Bereichsnamen mit VBA löschen

Bereichsnamen mit VBA löschen
30.04.2015 08:30:54
Norgas
Versuche Bereichnamen mit VBA zu löschen. Habe im Archiv folgenden Vorschlag gefunden:

Sub alle_Loeschen()
Dim n As Name
For Each n In ActiveWorkbook.Names
n.Delete
Next
End Sub

Das scheint soweit zu funktionieren aber irgendwie nur halb. Die Namen erscheinen nicht mehr im Selektor aber sie scheinen irgendwie doch noch bekannt zus sein, denn wenn ich denselben nochmals anlege kann ich das nicht weil er schon vorhanden ist.
Kennt jemand das Problem und eine Lösung?

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereichsnamen mit VBA löschen
02.05.2015 17:55:37
fcs
Hallo Norgas,
ich hab dein Makro getestet.
Sub alle_Loeschen()
Dim n As Name
For Each n In ActiveWorkbook.Names
n.Delete
Next
End Sub
Sub TestAddDeleteAddNames()
ActiveSheet.Range("C3:K3").Name = "WerteYYY"
ActiveSheet.Range("C8:K8").Name = "WerteXXX"
ActiveWorkbook.Names.Add Name:="WerteZZZ", RefersTo:=ActiveSheet.Range("C5:M5")
Call alle_Loeschen
ActiveSheet.Range("C3:K3").Name = "WerteYYY"
ActiveSheet.Range("C8:K8").Name = "WerteXXX"
ActiveWorkbook.Names.Add Name:="WerteZZZ", RefersTo:=ActiveSheet.Range("C5:M5")
End Sub

Ich hatte keine Probleme mit deinem Makro Namen zu löschen und die gleichen Namen wieder anzulegen. Sowohl manuell als auch per Makro.
Ich empfehle aber ein Makro der folgenden Form zum Löschen der Namen, da es auch Namen gibt, die man ggf. nicht löschen sollte/kann. Die Anzeige der MsgBoxen und Sicherheitsabfrage kann man natürlich weglassen.
Gruß
Franz
Sub Datei_Namen_Loeschen()
'Erstellt 2012-06-02
'löscht in der aktiven Arbeitsmappe alle definierten Namen (auch unsichtbare!) _
- außer MS-geschützter Namen für Tabellen-Funktionen
On Error GoTo Fehler
Dim objName As Name
If ActiveWorkbook.Names.Count = 0 Then
MsgBox "In der aktiven Arbeitsmappe sind keine Namen vorhanden.", vbInformation + vbOKOnly, _
_
"Namen löschen"
GoTo Beenden
End If
If MsgBox("Alle Namen in aktiver Arbeitsmappe löschen?", vbQuestion + vbOKCancel, _
"Namen löschen") = vbCancel Then GoTo Beenden
For Each objName In ActiveWorkbook.Names
If LCase(Left(objName.Name, 6))  "_xlfn." Then
objName.Delete
End If
Next
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case 1004
MsgBox "Name """ & objName.Name & """ kann nicht gelöscht werden", _
vbInformation + vbOKOnly, "Namen in Mappe löschen"
Resume Next
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
Beenden:
Set objName = Nothing
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Bereichsnamen in Excel mit VBA löschen


Schritt-für-Schritt-Anleitung

Um benannte Bereiche in Excel mit VBA zu löschen, kannst du die folgende Schritt-für-Schritt-Anleitung nutzen:

  1. Öffne Excel und gehe zu dem Arbeitsblatt, in dem du die benannten Bereiche löschen möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Klicke auf Einfügen > Modul.
  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub alle_Loeschen()
       Dim n As Name
       For Each n In ActiveWorkbook.Names
           n.Delete
       Next
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro aus:

    • Drücke ALT + F8, wähle alle_Loeschen und klicke auf Ausführen.

Jetzt sollten alle benannten Bereiche in deinem Arbeitsblatt gelöscht sein. Wenn du Probleme hast, dass die Namen nicht vollständig gelöscht werden, kannst du die erweiterte Methode im nächsten Abschnitt ausprobieren.


Häufige Fehler und Lösungen

  • Problem: Nach dem Ausführen des Makros sind die Namen im Selektor verschwunden, aber der Name ist noch bekannt.

    • Lösung: Verwende das erweiterte Makro aus dem Beitrag von fcs, das sicherstellt, dass auch unsichtbare Namen gelöscht werden. Hier ist der Code:
    Sub Datei_Namen_Loeschen()
       On Error GoTo Fehler
       Dim objName As Name
       If ActiveWorkbook.Names.Count = 0 Then
           MsgBox "In der aktiven Arbeitsmappe sind keine Namen vorhanden.", vbInformation + vbOKOnly, "Namen löschen"
           Exit Sub
       End If
       If MsgBox("Alle Namen in aktiver Arbeitsmappe löschen?", vbQuestion + vbOKCancel, "Namen löschen") = vbCancel Then Exit Sub
       For Each objName In ActiveWorkbook.Names
           If LCase(Left(objName.Name, 6)) <> "_xlfn." Then
               objName.Delete
           End If
       Next
    Fehler:
       MsgBox "Fehler beim Löschen des Namens: " & objName.Name
    End Sub
  • Problem: Fehlermeldungen beim Löschen eines Namens.

    • Lösung: Stelle sicher, dass du keine geschützten oder nicht löschbaren Namen versuchst zu löschen.

Alternative Methoden

Eine alternative Methode, um Excel benannte Bereiche zu löschen, ist die manuelle Methode:

  1. Gehe zu Formeln in der oberen Menüleiste.
  2. Klicke auf Namensmanager.
  3. Wähle den benannten Bereich aus, den du löschen möchtest.
  4. Klicke auf Löschen.

Diese Methode ist besonders nützlich, wenn du nur einen bestimmten Namen löschen möchtest.


Praktische Beispiele

Hier ist ein praktisches Beispiel, das zeigt, wie du sowohl das Löschen als auch das Anlegen von benannten Bereichen kombinieren kannst:

Sub TestAddDeleteAddNames()
    ActiveSheet.Range("C3:K3").Name = "WerteYYY"
    ActiveSheet.Range("C8:K8").Name = "WerteXXX"
    ActiveWorkbook.Names.Add Name:="WerteZZZ", RefersTo:=ActiveSheet.Range("C5:M5")
    Call alle_Loeschen
    ActiveSheet.Range("C3:K3").Name = "WerteYYY"
    ActiveSheet.Range("C8:K8").Name = "WerteXXX"
    ActiveWorkbook.Names.Add Name:="WerteZZZ", RefersTo:=ActiveSheet.Range("C5:M5")
End Sub

In diesem Beispiel kannst du sehen, wie du einen benannten Bereich hinzufügst, alle benannten Bereiche löscht und dann die ursprünglichen Namen erneut hinzufügst.


Tipps für Profis

  • Verwende die On Error Resume Next-Anweisung, um das Skript robuster zu gestalten, wenn du versuchst, nicht vorhandene Namen zu löschen.
  • Backup deiner Arbeitsmappe: Bevor du Namen löschst, erstelle ein Backup der Arbeitsmappe, um versehentliches Löschen wichtiger Daten zu vermeiden.
  • Automatisierung: Du kannst diese VBA-Skripte in eine Schaltfläche auf deinem Arbeitsblatt einfügen, um das Löschen von Namen noch einfacher zu machen.

FAQ: Häufige Fragen

1. Wie kann ich nur bestimmte benannte Bereiche löschen?
Du kannst das VBA-Skript anpassen, um nur bestimmte Namen zu löschen, indem du eine Bedingung in der Schleife hinzufügst.

2. Was mache ich, wenn das Makro nicht ausgeführt wird?
Stelle sicher, dass Makros in deinen Excel-Einstellungen aktiviert sind und dass du das richtige Modul ausgewählt hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige