Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1864to1868
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Namen auslesen und löschen

Namen auslesen und löschen
25.01.2022 16:28:25
Markus
Hallo zusammen.
Ich möchte Namen aus bestimmten Arbeitsblättern auslesen und löschen.
Mit meinem Code scheint es nicht zu funktionieren.
Bsp.
Dim sh As Worksheet, n As Name
For Each sh In Sheets(Array("Tabelle7", "Tabelle6"))
For Each n In sh.Names
n.Delete
Next
Next
Mit diesem Codeschnipsel erreiche ich kein Ergebnis.
Vielleicht kann mir jemand helfen.
Danke schon mal

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namen auslesen und löschen
25.01.2022 16:48:08
Daniel
Hi
wenn du dir die Namen mal im Manager anschaust, für welchen Bereich sind die erstellt: "Arbeitsmappe" oder ein Tabellenblatt?
Gruß Daniel
AW: Namen auslesen und löschen
25.01.2022 17:13:31
Yal
Hallo Markus,
die Definition der Aufgabe ist nicht klar: möchtest Du die Namen löschen,
_ die für einem Bereich in diesen Tabellen oder
_ die nur für eine diesen Tabelle definiert sind
Führe folgende Auflistung:

Sub Namen_auflisten()
Dim n As Name
For Each n In Application.Names
Debug.Print n.Name, n.RefersTo
Next
End Sub
Bei meinem Test mit meinen Daten (Du hast ja nichts zur Verfügung gestellt), bekomme ich folgende Ergebnis:
hallo =Tabelle2!$B$8:$B$13
Header =Tabelle1!$A$1:$F$1
Test =Tabelle1!$F$8:$F$10
Tabelle1!Test1 =Tabelle1!$F$22
Tabelle2!Test1 =Tabelle2!$G$22
Die letzten 2 referieren nicht nur auf eine Tabelle, diese sind auch nur für diese Tabelle gültig. Es erlaubt daher gleiche Name, aber andere Definition.
Daher entweder

Sub NamenNachTabelle_löschen()
Dim n As Name
Dim s
For Each n In Application.Names
For Each s In Array("Tabelle6", "Tabelle7")
If InStr(1, n.Name, s, vbTextCompare) Then n.Delete
Next
Next
End Sub
oder

Sub NamenNachRefers_löschen()
Dim n As Name
Dim s
For Each n In Application.Names
For Each s In Array("Tabelle6", "Tabelle7")
If InStr(1, n.RefersTo, s, vbTextCompare) Then n.Delete
Next
Next
End Sub
VG
Yal
Anzeige
AW: Namen auslesen und löschen
25.01.2022 18:38:03
Daniel
Hi
vermutlich sind die Namen die du löschen möchtest, der Mappe zugeordnet und beziehen sich nur auf die genannten Tabellenblätter.
in dem Fall könntest du diese so löschen:

Sub test()
Dim n As Name
For Each n In ThisWorkbook.Names
If Evaluate("=isref(" & n.Name & ")") Then
Select Case n.RefersToRange.Worksheet.Name
Case "Tabelle6", "Tabelle7"
n.RefersToRange.Delete
Case Else
End Select
End If
Next
End Sub
gelöscht werden hier nur Namen, die einen Zellbezug darstellen.
Gruß Daniel
Korrektur
25.01.2022 18:43:35
Daniel
zum löschen nur n.Delete, nicht n.RefersToRange.Delete (das löscht dann die Zelle(n) nicht den Namen).
Gruß Daniel
Anzeige
AW: Namen auslesen
25.01.2022 21:02:20
GerdL
Hallo,
das passt hier außer Konkurenz rein:

Sub Workbookname_Worksheetname()
Dim n As Name
For Each n In ThisWorkbook.Names
If TypeOf n.Parent Is Worksheet Then
MsgBox n.Name & vbLf & n.RefersTo & vbLf & "Name der gesamten Arbeitsmappe: " & n.ValidWorkbookParameter
ElseIf TypeOf n.Parent Is Workbook Then
MsgBox n.Name & vbLf & n.RefersTo & vbLf & "Name der gesamten Arbeitsmappe: " & n.ValidWorkbookParameter
End If
Next
End Sub
Gruß Gerd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige