Bereichsnamen mit VBA löschen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Bereichsnamen mit VBA löschen
von: Norgas
Geschrieben am: 30.04.2015 08:30:54

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?

Bild

Betrifft: AW: Bereichsnamen mit VBA löschen
von: fcs
Geschrieben am: 02.05.2015 17:55:37
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


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Bereichsnamen mit VBA löschen"