832 Aufrufe
Gefragt in Tabellenkalkulation von mimadel Mitglied (117 Punkte)
Hallo zusammen,

ich habe derzeit einen Fehler in einem Makro, den ich einfach nicht in den Griff bekomme (unter Excel 2007 hatte ich keine Probleme...):

Aus einer vorhandenen Datei speichere ich ein Tab.blatt als separate Datei mit Namenszuweisung etc. ab. Dann sollen in dieser neuen Datei alle Namen aus dem Namens-Manager gelöscht werden.

Dafür nutze ich folgenden Code:
For Each varname In ActiveWorkbook.Names
varname.Delete
Next varname

Das Makro bricht aber an dieser Stelle ab und verweist auf den Namen "_xlfn.COUNTIFS" mit dem Fehlerhinweis "Der eingegebene Name ist ungülitg."
Im Namensmanager steht für diesen Bereich unter Wert der Hinweis "=NAME?", dto. für die Spalte "Bezieht sich auf".

Ich habe diesen Bereich niemals manuell definiert, habe ihn sogar gelöscht, der taucht jedoch nach mehreren Dateiaufrufen wie von Geisterhand wieder auf und blockiert/bremst mein Makro.

Hat jemand eine Idee, woran das liegen kann bzw. wie ich diesen Bereich dauerhaft löschen kann?

Danke für jeden Tipp!

4 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

ich nehme mal an, dass du in der betreffenden Datei die Formel ZÄHLENWENNS verwendest. Dann wird offensichtlich der Bereich angelegt (gilt übrigens auch für Summewenns, wie bei einem Test herausgefunden habe). Löschen wirst du diesen Namen nicht können, es sei denn du löschst die Formeln.

Wenn du nur die Namen im aktuellen Tabellenblatt löschen willst, dann versuch es mal so:

For Each varname In ActiveWorkbook.Names
If InStr(1, varname.RefersTo, ActiveSheet.Name, vbTextCompare) > 0 Then varname.Delete
Next varname


Damit wird abgeglichen, ob der Name des aktiven Tabellenblatts im Bereichsnamen vorhanden ist (was bei Countifs nicht der Fall ist) und nur dann der Name gelöscht.
Wenn du alle Bereiche in allen Tabellen deiner Datei löschen willst, müsstest du das dann in einer zusätzlichen Schleife machen.

Gruß

M.O.
0 Punkte
Beantwortet von mimadel Mitglied (117 Punkte)
Danke, M.O. für den Tipp.
Ich habe gestern aus Verzweiflung den Bereich _xlfn.countifs erstmal manuell aus der "Mutterdatei" gelöscht, das funktioniert wenigstens.

Und bisher ist dieser Bereich (zum Glück) auch nicht wieder aufgetaucht, daher kann ich deinen Vorschlag auch nicht testen.

Das werde ich aber sofort, wenn er wieder auftauchen sollte und dann berichten.
Aber erstmal vielen Dank!
0 Punkte
Beantwortet von mimadel Mitglied (117 Punkte)
Ach so, noch ein Nachtrag:
ZÄHLENWENNS habe ich nirgendwo in der Datei verwendet, lediglich das "alte" ZÄHLENWENN und diverse Matrixformeln, die Datei ist ursprünglich in Excel 2003 erstellt worden und dann konvertiert.
In Excel 2003 hatte ich das aktuelle Problem während zwe Jahren nicht ein einziges Mal... - seltsam und das erste Mal, dass Excel 2007 für mich keinen Vorteil ggü 2003 darstellt... :-(
Es hat schon Stunden gedauert, auf das Problem im Namensmanager zu stoßen...
0 Punkte
Beantwortet von mimadel Mitglied (117 Punkte)
Heureka!

Danke nochmal an M.O. für den wertvollen Tipp!!!
Das Problem tauchte tatsächlich wieder auf und ich konnte es jetzt wie folgt lösen (für alle, die vllt ein ähnliches Problem haben):

Ziel war, alle Namensbezeichnungen aus dem Namensmanager zu eliminieren, wenn ein Tabellenblatt als separate Kopie gespeichert wird.

Schritt 1:
For Each varname In ActiveWorkbook.Names
If InStr(1, varname.RefersTo, "XXX", vbTextCompare) > 0 Then varname.Delete
Next varname
--> "XXX" bezieht sich auf den (Teil-)Dateinamen und löscht schon mal alles Wesentliche raus

Schritt 2:
For Each varname2 In ActiveWorkbook.Names
If InStr(1, varname2.RefersTo, ActiveSheet.Name, vbTextCompare) > 0 Then
varname2.Delete
Next varname2
--> das löscht mir dann das blöde "_xlfn.COUNTIFS" aus dem Namensmanager, wobei ich nach wie nicht weiß, warum, wieso und weshalb das überhaupt auftaucht.

Nochmals vielen Dank an M.O. und dieses tolle Forum hier, einfach klasse!
...