AW: Löschen der Namen
01.03.2008 01:15:52
fcs
Hallo Lemmi,
in etwas vereinfachter Form hatte ich das schon in deine Werkstoff-Auswahldatei eingebaut.
Je nachdem was man in einer Datei alles so treibt legt Excel möglichweise noch andere unsichtbare Namen an, deren Löschen evtl. die Funktionalität in der Datei stört. Deshalb auch noch 2 Makros zum Anzeigen von Infos zu Namen. Also Vorsicht!
Gruß
Franz
Sub Namenloeschen()
'Löschen von Bereichsnamen in der Arbeitsmappe
Dim objName As Name
If MsgBox("Namen in Datei löschen?", vbOKCancel + vbQuestion, _
"Namen Löschen") = vbOK Then
For Each objName In ThisWorkbook.Names
Select Case IIf(InStr(1, objName.Name, "!") > 0, Mid(objName.Name, _
InStr(1, objName.Name, "!") + 1), objName.Name)
'Liste 1 der Ausnahmen userdefinierte Namen, ggf. ergänzen!!!
Case "DatenTab", "Werkstoffgruppe"
'do nothing
'Liste 2 der Ausnahmen, Druckbereiche, -Titel der Tabellen
Case "Print_Area", "Print_Titles"
'do nothing
'Liste 3 der Ausnahmen, Autofilter- und Spezialfilter-Bereiche
Case "_FilterDatabase", "Criteria", "Extract"
'do nothing
Case Else
objName.Delete
End Select
Next
End If
Set objName = Nothing
End Sub
Sub NamenAnzeigenmitInfo()
'Zeigt die Namen einzeln in einer Message-Box an mit Detail-Informationen
Dim objName As Name
For Each objName In ActiveWorkbook.Names
With objName
If MsgBox("Name: " & .Name & vbLf _
& "Name lokal: " & .NameLocal & vbLf _
& "Wert: " & .Value & vbLf _
& "sichtbar: " & IIf(.Visible, "Ja", "Nein") & vbLf, vbOKCancel, _
"Namen in aktiver Arbeitsmappe") = vbCancel Then Exit For
End With
Next
Set objName = Nothing
End Sub
Sub NamenAnzeigenListe()
'Zeigt die Namen als Liste in einer Message-Box an
Dim objName As Name, strText As String, Zaehler As Integer
For Each objName In ActiveWorkbook.Names
strText = strText & Chr$(10) & objName.Name
Zaehler = Zaehler + 1
If Zaehler = 21 Then
If MsgBox(strText, vbOKCancel, "Liste der Namen in aktiver Arbeitsmappe") = _
vbCancel Then
Exit For
Else
strText = ""
Zaehler = 0
End If
End If
Next
If strText "" Then
MsgBox strText, vbOKOnly, "Liste der Namen in aktiver Arbeitsmappe"
End If
Set objName = Nothing
End Sub