Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Alle Namen löschen (ausser Druckbereich)

86 views
Skip to first unread message

Marcel Peter

unread,
Feb 3, 2000, 3:00:00 AM2/3/00
to
Hallo NG

Ich habe mal ein Makro zum Löschen von Tabellenblättern aufgeschnappt.
Dieses habe ich einfach umgeschrieben zum Löschen von Namen, welche unter
Einfügen/Namen/Festlegen definiert worden sind. Als Nebeneffekt werden auch
Druckbereiche und Druckzeilen gelöscht.
Frage: Wie kann ich alle Namen löschen, obige Bereiche aber stehen lassen?
Anbei mein Makro (Excel97-SR2):


Sub AlleNamenLoeschen()

Dim Mldg, Stil, Titel, Antwort, Text1
Mldg = "Alle Namen in dieser Datei löschen? --> Prüfen!!!"
Stil = vbYesNoCancel + vbCritical + vbDefaultButton2
Titel = "Alle Namen Löschen"

Antwort = MsgBox(Mldg, Stil, Titel, Hilfe, Ktxt)
If Antwort = vbYes Then
For Each u In Worksheets
For Each w In ActiveWorkbook.Names

'Jetzt klappts nicht mehr (Text wird nicht erkannt):
'********************************************************
If w <> "Druckbereich" Or w <> "Drucktitel" Then
w.Delete
End If

Next w
Next u
Text1 = "Alle Namen sind nun gelöscht"
ElseIf Antwort = vbNo Then
Text1 = "Sie haben Nein gesagt"
Else
Text1 = "Sie haben abgebrochen"
End If

MsgBox (Text1)
End Sub


Ich bin für jeden Tipp dankbar.
Marcel


Jean-Dominique Amsler

unread,
Feb 3, 2000, 3:00:00 AM2/3/00
to
Lieber Marcel,

probier mal eine "AND" und nicht "OR" Abfrage ! So werden alle Namen
gelöscht ! Siehe unten.

Wenn's immer noch nicht klappt, sind die Namen evtl. in Englisch vorhanden
("Print area") oder dergleichen....

Gruss
Jean-Dominique Amsler

ace amsler computer enterprises
birmendsdorferstrasse 486
8055 Zürich


> Sub AlleNamenLoeschen()
>
> Dim Mldg, Stil, Titel, Antwort, Text1
> Mldg = "Alle Namen in dieser Datei löschen? --> Prüfen!!!"
> Stil = vbYesNoCancel + vbCritical + vbDefaultButton2
> Titel = "Alle Namen Löschen"
>
> Antwort = MsgBox(Mldg, Stil, Titel, Hilfe, Ktxt)
> If Antwort = vbYes Then
> For Each u In Worksheets
> For Each w In ActiveWorkbook.Names
>
> 'Jetzt klappts nicht mehr (Text wird nicht erkannt):
> '********************************************************

XXXXX Hier ändern:

if w <> "Druckerbereich" AND w <> "Drucktitel" then

XXXXXXXXXXXX

Bernd Held

unread,
Feb 3, 2000, 3:00:00 AM2/3/00
to

Hi Marcel,
gute Frage! Das geht nämlich so:

Sub AlleNamenLoeschen()

Dim Mldg, Stil, Titel, Antwort, Text1
Mldg = "Alle Namen in dieser Datei löschen? --> Prüfen!!!"
Stil = vbYesNoCancel + vbCritical + vbDefaultButton2
Titel = "Alle Namen Löschen"

Antwort = MsgBox(Mldg, Stil, Titel, Hilfe, Ktxt)
If Antwort = vbYes Then
For Each u In Worksheets
For Each w In ActiveWorkbook.Names


If Right(w.Name, 10) <> "Print_Area" Then 'Or w <> "Drucktitel"
Then
w.Delete
End If

Next w
Next u
Text1 = "Alle Namen sind nun gelöscht"
ElseIf Antwort = vbNo Then
Text1 = "Sie haben Nein gesagt"
Else
Text1 = "Sie haben abgebrochen"
End If

MsgBox (Text1)
End Sub

Viele Grüße
Bernd
//////////////////////////////////////
// Die MacHero Excel Homepage
// Microsoft Excel MVP
// http://members.aol.com/Machero
//
// +++ Jetzt auch mit WORKS Section +++
//
// Mein aktuelles Excel Buch bei Markt&Technik:
// http://www.mut.de/katalog/default.asp?Action=Buch&buchnum=3827256658


"Marcel Peter" <m.p...@ckw.ch> wrote:
>Hallo NG>
>Ich habe mal ein Makro zum Löschen von Tabellenblättern aufgeschnappt.
>Dieses habe ich einfach umgeschrieben zum Löschen von Namen, welche unter
>Einfügen/Namen/Festlegen definiert worden sind. Als Nebeneffekt werden auch
>Druckbereiche und Druckzeilen gelöscht.
>Frage: Wie kann ich alle Namen löschen, obige Bereiche aber stehen lassen?
>Anbei mein Makro (Excel97-SR2):
>
>

>Sub AlleNamenLoeschen()
>
>Dim Mldg, Stil, Titel, Antwort, Text1
>Mldg = "Alle Namen in dieser Datei löschen? --> Prüfen!!!"
>Stil = vbYesNoCancel + vbCritical + vbDefaultButton2
>Titel = "Alle Namen Löschen"
>
>Antwort = MsgBox(Mldg, Stil, Titel, Hilfe, Ktxt)
>If Antwort = vbYes Then
> For Each u In Worksheets
> For Each w In ActiveWorkbook.Names
>
>'Jetzt klappts nicht mehr (Text wird nicht erkannt):
>'********************************************************

> If w <> "Druckbereich" Or w <> "Drucktitel" Then
> w.Delete
> End If
>
> Next w
> Next u
> Text1 = "Alle Namen sind nun gelöscht"
>ElseIf Antwort = vbNo Then
> Text1 = "Sie haben Nein gesagt"
>Else
> Text1 = "Sie haben abgebrochen"
>End If
>
>MsgBox (Text1)
>End Sub
>
>
>Ich bin für jeden Tipp dankbar.
>Marcel
>
>
>
>
>

--
_____________________________________________________________
NewsGroups Suchen, lesen, schreiben mit http://netnews.web.de


Frank Arendt-Theilen

unread,
Feb 3, 2000, 3:00:00 AM2/3/00
to
Hallo Marcel,
mit diesem Makro werden nur die Namen auf Mappenebene gelöscht. Die
Namen auf Blattebene bleiben erhalten!

MfG Frank
_____________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel, Hameln
E-Mail: Thei...@t-online.de


Am Thu, 03 Feb 2000 10:40:01 GMT, schrieb "Marcel Peter"
<m.p...@ckw.ch> in microsoft.public.de.excel zu "Alle Namen löschen
(ausser Druckbereich)":

Marcel Peter

unread,
Feb 3, 2000, 3:00:00 AM2/3/00
to
Hallo Jean-Dominique

Vielen Dank für den Tipp.

"And" ist nur ein Teil der Lösung. Folgendes Kernproblem besteht noch immer:
Der Inhalt der Variable "w" ergibt zB. mit Debug.Print w
<Blattname!$H$230:$M$278>, also einen absoluten Bereich im Blatt, wobei für
$H$230:$M$278 der Name Test123 festgelegt worden ist.
Der Vergleich von $H$230:$M$278 mit dem Wert <Druckbereich> wird nie wahr
werden, auch wenn es der Druckbereich wäre, da der Datentyp nicht kompatibel
ist.

Es müsste irgendwie heissen:

snip
If w.Name <> "Druckbereich" And w.Name <> "Drucktitel" Then...
snip

Gruss, Marcel

Marcel Peter

unread,
Feb 3, 2000, 3:00:00 AM2/3/00
to
Hallo Bernd
Vielen Dank für diesen Super-Tipp!

Die entsprechende Zeile sieht nun so aus:

snip
If Right(w.Name, 12) <> "Druckbereich" _
And Right(w.Name, 10) <> "Drucktitel" Then
snip

Herzliche Grüsse aus Luzern,
Marcel

Frank Arendt-Theilen

unread,
Feb 3, 2000, 3:00:00 AM2/3/00
to
Hallo Marcel,
hier eine Collection zum Löschen von Namen:

Sub AlleGlobalenNamenLöschen()
Dim Name As Name
For Each Name In ActiveWorkbook.Names
If InStr(Name.Name, "!") = 0 Then
Name.Delete
End If
Next
End Sub

Sub AlleLokalenNamenLöschen()
Dim Name As Name
Dim wshBlatt As Worksheet
For Each wshBlatt In ActiveWorkbook.Worksheets
For Each Name In wshBlatt.Names
Name.Delete
Next
Next
End Sub

Sub AlleNamenLöschen()
Dim Name As Name
For Each Name In ActiveWorkbook.Names
Name.Delete
Next
End Sub

Sub AlleNamenLöschenNichtDruckbereich()
Dim Name As Name
Dim wshBlatt As Worksheet
Call AlleGlobalenNamenLöschen
For Each wshBlatt In ActiveWorkbook.Worksheets
For Each Name In wshBlatt.Names
If Name.Name <> wshBlatt.Name & "!" & _
"Print_Area" Then
Name.Delete
End If
Next
Next
End Sub

Dr. Eckehard Pfeifer

unread,
Feb 3, 2000, 3:00:00 AM2/3/00
to
Hallo, Name und Names sind in Excel mehrfach vergeben. Die richtige
Pseudocode-Antwort ist (aehnlich Frank)

for each w in Names
if w.Name<>"Print_Area" oder
if w.NameLocal<>"Druckbereich"

--
Mit freundlichen Gruessen
Eckehard Pfeifer

(http://home.t-online.de/home/Dr.Eckehard.Pfeifer)

Das VBA-Magazin - ein Blick lohnt sich immer: www.vba-magazin.de

Ausführliche Informationen zur ViBAT: http://www.vba-magazin.de/vibat

Frank Arendt-Theilen

unread,
Feb 3, 2000, 3:00:00 AM2/3/00
to
Der Vorhergehende Beitrag ist Quatsch! Schnell vergessen!

MfG Frank
_____________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel, Hameln
E-Mail: Thei...@t-online.de


Am Thu, 03 Feb 2000 14:04:37 +0100, schrieb Frank Arendt-Theilen
<Thei...@t-online.de> in microsoft.public.de.excel zu "Re: Alle Namen
löschen (ausser Druckbereich)":

>Hallo Marcel,


>mit diesem Makro werden nur die Namen auf Mappenebene gelöscht. Die
>Namen auf Blattebene bleiben erhalten!
>

0 new messages