Zell Namen prüfen per VBA



Excel-Version: 8
nach unten

Betrifft: Zell Namen prüfen per VBA
von: Hans-Jörg
Geschrieben am: 29.04.2002 - 09:30:56

Hallo,
Ich habe viele Zellen und einige Spalten mit Namen belegt.
Nun kommt es vor, dass bei Spaltennamen der Bezug verloren geht.
Über Menü Einfügen - Name - Einfügen / Liste Einfügen, habe ich auf einem Tabellenblatt alle Zuweisungen und Adressen.
wer kann mir eine Hilfe geben um per VBA beim Start der Mappe
zu prüfen ob alle Namen noch korrekt sind. Wenn nicht sollen sie gemäß der liste wieder eingetragen werden.
Darunter sind,

Zellnamen: z.B.
DatHeute =Konstanten!$D$61
DepotPath =Konstanten!$D$7

Bereichsnamen: z.B.
Ausschluss =Konstanten!$A$55:$P$56

SpaltenNamen z.B.
OU =CSVinput!$A:$A

Durch den Bezugsverlust funktioniert die gesamte Mappe nicht mehr Beispiele:
CompCode=CSVinput!#BEZUG!
Kst =CSVinput!#BEZUG!
ME =CSVinput!#BEZUG!
Preis =CSVinput!#BEZUG!
START =#BEZUG!$A$3:$A$3

Hans-Jörg

nach oben   nach unten

Re: Zell Namen prüfen per VBA
von: Joachim K
Geschrieben am: 29.04.2002 - 10:14:50

Hallo Hans-Jörg, mit folgendem Code kannst Du die Namen in einer Arbeitsmappe auflisten lassen : Sub Namen_auflisten() On Error Resume Next Application.DisplayAlerts = False Sheets("nm.liste").Delete Sheets.Add.Name = "nm.liste" Columns("B:B").ColumnWidth = 50 Application.ScreenUpdating = False Application.Calculation = xlManual Sheets("nm.liste").Select Range("A3:C400").ClearContents i = 5 For Each nm In ActiveWorkbook.Names Cells(i, 1).Value = i - 4 Cells(i, 2).Value = nm.Name Cells(i, 3).Value = "'" & nm.RefersTo i = i + 1 Next Application.Calculation = xlAutomatic Application.DisplayAlerts = True End Sub Aber gemäß welche Liste sollen sie bei Bedarf wieder eingetragen werden? Ich denke Du musst prüfen wo der Fehler (#Bezug) entsteht - in der Regel beim Löschen von Blättern, Spalten ... Gruß Joachim

nach oben   nach unten

Re: das ist es nicht. Namen müssen geprüft werden
von: Hans-Jörg
Geschrieben am: 29.04.2002 - 10:46:00

Hallo Joachim, Vielen Dank, aber das war nicht meine Frage. Die Liste kann ich wie beschrieben erstellen. Sie wird nur einmal geschrieben. Wichtiger ist die Frage : Wie kann ich alle definierten Namen beim Start der Mappe anhand einer Liste prüfen und korigieren. Hans-Jörg

nach oben   nach unten

Re: das ist es nicht. Namen müssen geprüft werden
von: Joachim K
Geschrieben am: 29.04.2002 - 11:16:33

Hallo Hallo Hans-Jörg, mit folgendem Code findest Du alle Namen mit #Bezug: Sub Finde_Namen_ohne_Bezug() For Each nm In ActiveWorkbook.Names If InStr(1, nm, "#") > 0 Then ActiveWorkbook.Names(nm.Name).Delete 'Namen ohne Bezug löschen End If Next End Sub Es gibt jetzt 2 Möglichkeiten - alle Namen löschen und neu vergeben - nur die Namen mit #Bezug zu löschen und neu zu vergeben Wobei ich den Weg "#Bezug" zu vermeiden für den sinnvollsten Ansatz halte. Gruß Joachim

nach oben   nach unten

Re: Genau ums vermeiden geht es mir.
von: Hans-Jörg
Geschrieben am: 29.04.2002 - 12:27:38

Vielen Dank, Werde versuchen daraus eine Abfrage zu stricken. Wenn ein Name ohne Bezug sein sollte, werden alle Namen gelöscht und neu vergeben. Entsprechend der Liste die 2 Spaltig auf dem Tabellenblatt vorliegt. Ich weis noch nicht wie das vorkommen kann das namen ohne Bezug auftreten. Habe aber eine Ahnung. Ich vergebe für ein Blatt beim Start 5 Spalten je einen Namen. Prüfe aber nicht ob sie schon existieren.Das muß ich ändern. Hans-Jörg

nach oben   nach unten

Re: Genau ums vermeiden geht es mir.
von: Joachim K
Geschrieben am: 29.04.2002 - 13:31:35

Hallo Hallo Hans-Jörg, Namen mit #Bezug entstehen wenn Arbeitsblätter, Spalten, Zeilen oder Bereiche gelöscht werden, auf die sich ein Namen bezieht. Andere Ursachen kenne ich nicht. Gruß Joachim

nach oben   nach unten

Re: Datei Speichern unter.........
von: Hans-Jörg
Geschrieben am: 29.04.2002 - 14:10:34

Könnte mir aber gut vorstellen: Wenn die bestehende Mappe unter einen anderen Name gespeichert wird, das gleiche passieren kann. Jedenfals kann ich mit deinen beiden Codes schon mal was anfangen. Ich muss diese Gefahr einfach bannen. wie kann ich eine Liste einlesen und die Namen alle setzen? versuche es mal zu beschreiben: Dim strName as String Dim strAdresse As String Dim IRow% - Alle Namen Löschen - IRow "Letzte Zeile einlesen - Dann nach einander Name und Adresse aus Spalte A und B in Variablen lesen und setzen. Geht das besser mit Array ? oder zeilenweise mit IF abfrage und IRow als Zähler Hans-Jörg

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Datumsformatierung ist englisch"