Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender Navigationstipps
Inhaltsverzeichnis

Zell Namen prüfen per VBA

Zell Namen prüfen per VBA
29.04.2002 09:30:56
Hans-Jörg
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

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Zell Namen prüfen per VBA
29.04.2002 10:14:50
Joachim K
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
Anzeige
Re: das ist es nicht. Namen müssen geprüft werden
29.04.2002 10:46:00
Hans-Jörg
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
Re: das ist es nicht. Namen müssen geprüft werden
29.04.2002 11:16:33
Joachim K
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
Anzeige
Re: Genau ums vermeiden geht es mir.
29.04.2002 12:27:38
Hans-Jörg
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
Re: Genau ums vermeiden geht es mir.
29.04.2002 13:31:35
Joachim K
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
Anzeige
Re: Datei Speichern unter.........
29.04.2002 14:10:34
Hans-Jörg
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
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige