HERBERS Excel-Forum - das Archiv
Namen löschen
Claudia

Hallo zusammen,
folgendes Makro löscht alle Namen der Datei. Wie muss ich das Makro ändern, wenn nur die Namen des aktiven Blattes gelöscht werden sollen?
Vielen Dank!
LG
Claudia

Sub alle_Namen_löschen()
Dim blatt As Worksheet
Dim name As name
Dim intwahl As Integer
intwahl = MsgBox("Das Makro löscht alle Namen! Wollen Sie das wirklich?", _
vbYesNo + vbQuestion, "Rückfrage")
If intwahl = 6 Then
For Each blatt In Worksheets
For Each nam In ActiveWorkbook.Names
If Right(nam.name, 10) = "Print_Areaa" _
Or Right(nam.name, 12) = "Print_Titles" Then _
Else nam.Delete
Next nam
Next blatt
End If
End Sub

AW: Namen löschen
Josef

Hallo Claudia,
probier mal.
Sub alle_Namen_löschen()
  Dim blatt As Worksheet
  Dim nName As name
  Dim intwahl As Integer
  
  intwahl = MsgBox("Das Makro löscht alle Namen! Wollen Sie das wirklich?", _
    vbYesNo + vbQuestion, "Rückfrage")
  
  If intwahl = 6 Then
    For Each nName In ActiveWorkbook.Names
      If Right(nName.name, 10) <> "Print_Area" And Right(nName.name, 12) <> "Print_Titles" Then
        If Mid(nName.RefersTo, 2, Len(ActiveSheet.name)) = ActiveSheet.name Then nName.Delete
      End If
    Next
  End If
  
End Sub

Gruß Sepp

AW: Namen löschen
Claudia

Hallo Sepp,
da passiert irgendwie gar nix. :-)
AW: Namen löschen
Josef

Hallo Claudia,
damit werden nur Namen im gerade aktiven Blatt gelöscht, vorausgesetzt die Namen beziehen sich auf
einen Tabellenbereich und nicht etwa auf Formeln.
Gruß Sepp

OR nicht AND
F1

ot
Namen doppelt vergeben
Claudia

Hallo Sepp,
vermutlich liegt es daran, dass die Namen doppelt vergeben sind, weil ich eine Tabelle mehrfach kopiert habe.
Kann man das auch mit einem Mako löschen? Denn kein Makro hat bis jetzt irgendewas im aktiven Blatt gelöscht - auch nicht ein Austausch or statt and.
Liebe Grüße
Claudia
hier mein Vorschlag dazu
Tino

Hallo,
Sub alle_Namen_löschen()
Dim oName As Name, rngVerweis As Range

'sollte der Name eine Formel sein 
On Error Resume Next
    
    'Schleife über alle Namen 
    For Each oName In ActiveWorkbook.Names
        'Namen versuchen einem Rangeobjekt zuzuweisen 
        Set rngVerweis = Range(oName.Name)
        'ist Rangeobjekt ein Zellbereich? 
        If Not rngVerweis Is Nothing Then
            'Befindet sich dieses Rangeobjekt auf der aktuellen Tabelle? 
            If rngVerweis.Parent.Name = ActiveSheet.Name Then
              'Name mit den Namen Print_Areaa o. Print_Titles nicht löschen 
              If Right(nam.Name, 10) <> "Print_Areaa" And Right(nam.Name, 12) <> "Print_Titles" Then
                oName.Delete
              End If
            End If
        End If
    Next oName

'On Error GoTo 0  ' nur nötig wenn Makro hier weiter laufen sollte 
End Sub
Gruß Tino
Danke: Prima, jetzt sind sie gelöscht.
Claudia