AW: Problem Namensmanager
02.06.2012 19:31:28
fcs
Hallo Michael,
das Makro unten sollte alle Makros löschen außer den von Microsoft geschützten unsichtbaren Namen.
Wie von Luc bereits erwähnt, gibt es Namen auf Arbeitsmappenebene und auf Blattebene.
Standardmäßig legt Excel die Namen auf der Arbeitsmappen-Ebene an.
Wird ein Blatt, dass Namen für Zellbereiche enthält kopiert, dann werden für das kopierte Blatt die gleichen Namen angelegt, aber jetzt auf Tabellenblatt-Ebene. Im Namensmanager wird dies in der Rechten Spalte angezeigt.
Namen kann man unter VBA wie folgt ansprechen. Dabei kann die Auswertung unerwartete Ergebnisse liefern, wenn der gleiche Name in mehreren Tabellenblätter und zusätzlich auf Arbeitsmappenebene angelegt wurde. Namen im aktiven Tabellenblatt haben Vorrang vor Namen auf Arbeitsmappenebene.
Sub Namen_ansprechen()
'Beispiel für ansprechen von Namen in einem allgemeinen Modul
'auf Arbeitsmappenebene
'Name "Name_01" ist festgelegt für Zelle A9 im Blatt "Tabelle2 (2)"
'Auf Tabellenblattebene
'Name "Name_01" ist festgelegt für Zelle A5 im Blatt "Tabelle1"
'Tabelle1 ist bei Makroausführung das aktive Blatt
Dim Zeile As Long
Zeile = Application.Range("Name_01").Row ' Ergebnis: 5 'Vorsicht Ergebnis ist _
ggf. abhängig vom aktivem Blatt
Zeile = Application.Range("'Tabelle2 (2)'!Name_01").Row ' Ergebnis: 9
'Namen können immer mit der kompletten Objektreferenz angesprochen werden:
'Also z.B.
Zeile = Range("Name_01").Row ' Ergebnis: 5 'Vorsicht Ergebnis ist abhängig vom aktivem Blatt
'Zeile = ActiveSheet.Range("Name_01").Row ' Ergebnis: 5 'nicht ratsam, da Fehler anfällig
Zeile = Worksheets("Tabelle1").Range("Name_01").Row ' Ergebnis: 5
Zeile = Worksheets("Tabelle2 (2)").Range("Name_01").Row ' Ergebnis: 9
Zeile = Workbooks("Mappe6.xlsm").Worksheets("Tabelle2 (2)").Range("Name_01").Row ' Ergebnis: _
9
End Sub
Hier findest du ein Makro, das alle Namen der aktiven Arbeitsmappe in einer Tabelle listet.
https://www.herber.de/forum/messages/1265868.html
Gruß
Franz
Löschen-Makro für Namen
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