Namensfelder oder Variablen

Hallo Experte,
Namensfelder können in Excelmappen für Bereiche vergeben werden. Leider stoße ich bei einem umfangreichen Prg. an das Limit von Excel.

1.a)
Daher die Frage, ob es nicht generell sinnvoller ist, bestimmte Werte, die ich in Excel-Tabellen zwischenspeichere, lieber als public Variablen über Code zu verwalten?

1.b)
Kennt jemand den max. Wert der Namensfelder in EXCEL 2003?

2.a)
Kann ich in der Exceltabelle bereits vergebene Namensfelder wieder löschen?

2.b)
Auch wenn die bereits in ModulCode angesprochen wurden (Logisch, dass dann Fehlermeldungen auftauchen werden)?

Vielen Dank

Namensfelder können in Excelmappen für Bereiche vergeben werden. Leider stoße ich bei einem umfangreichen Prg. an das Limit von Excel.

1.b) Kennt jemand den max. Wert der Namensfelder in EXCEL 2003?

Das habe ich noch nicht geschafft. Und das Limit kenne ich nicht. Kann man aber leicht per Makro ermitteln, indem man so lange Namen definiert, bis der Arzt kommt.

1.a)
Daher die Frage, ob es nicht generell sinnvoller ist, bestimmte Werte, die ich in Excel-Tabellen zwischenspeichere, lieber als public Variablen über Code zu verwalten?

Das verstehe ich nicht so ganz, um ehrlich zu sein. Zumindest passt die Frage nicht zu meiner Art, mit Namen umzugehen. Ich verwende die Dinger ja, um trotz eventueller Verschiebungen von Spalten/Zeilen immer auf die richtigen Zellen zugreifen zu können. Wenn ich die Namen jetzt weglasse und mir nur Konstanten nach dem Motto Const xy As String = „A1:C10“ anlege, ist dieser Vorteil weg. Vielmehr lege ich mir immer für jeden Namen eine Konstante an, die den Namen selbst beinhaltet, damit ich bei einer eventuellen Änderung des Namens in der Tabelle nur einmal im Code ändern muss.

2.a) Kann ich in der Exceltabelle bereits vergebene Namensfelder wieder löschen?

Da man welche anlegen kann, müsste man sie auch wieder löschen können. Guck mal in der Hilfe nach dem „Names“-Objekt.

2.b) Auch wenn die bereits in ModulCode angesprochen wurden (Logisch, dass dann Fehlermeldungen auftauchen werden)?

Die kann man ja abfangen. Oder man schreibt den Code so, dass sie gar nicht mehr aufgerufen werden.

Kristian

Hi Gregor,

Namensfelder können in Excelmappen für Bereiche vergeben
werden. Leider stoße ich bei einem umfangreichen Prg. an das
Limit von Excel.

1.b)
Kennt jemand den max. Wert der Namensfelder in EXCEL 2003?

Falls es da eine Obergrenze gibt evtl. hier: http://www.xlam.ch/

2.a)
Kann ich in der Exceltabelle bereits vergebene Namensfelder
wieder löschen?

Ja.

2.b)
Auch wenn die bereits in ModulCode angesprochen wurden
(Logisch, dass dann Fehlermeldungen auftauchen werden)?

Wie schon gesagt, vor dem Zugriff im Code prüfen ob Name überhaupt vergeben ist.
Entweder mit einer For each schleife über alle Namen und falls diese Abprüfung zu lange dauert bei deinen vielen Namen, bei Dateiöffnung in einem Extrablatt die Liste aller Namen festhalten, bei jeder Nmaensanpassung diese Liste pflegen und dann im Code die Namensprüfung in etwa so:

If Application.Worksheetfunction.CountIf(„MeinMame“, worksheets(„Hilf“).Columns(1)>0 Then

(Syntax von ZählenWenn noch überprüfen)

Gruß
Reinhard

Namensfelder Limitation von Excel.

Falls es da eine Obergrenze gibt evtl. hier:
http://www.xlam.ch/

Habe website gecheckt, tatsächlich gibt es keine Info dazu. Habe aber glaube ich die Lösung gefunden. Sie liegt in der maximalen Verschachtelungstiefe von Namen (20). Diese werde ich überschritten haben.

2.a)
Kann ich in der Exceltabelle bereits vergebene Namensfelder
wieder löschen?

Ja.

wie? Durch einfaches Markieren und Entfernen funzt es nicht!

2.b)
Auch wenn die bereits in ModulCode angesprochen wurden
(Logisch, dass dann Fehlermeldungen auftauchen werden)?

Wie schon gesagt, vor dem Zugriff im Code prüfen ob Name
überhaupt vergeben ist.
Entweder mit einer For each schleife über alle Namen und falls
diese Abprüfung zu lange dauert bei deinen vielen Namen, bei
Dateiöffnung in einem Extrablatt die Liste aller Namen
festhalten, bei jeder Nmaensanpassung diese Liste pflegen und
dann im Code die Namensprüfung in etwa so:

If Application.Worksheetfunction.CountIf(„MeinMame“,
worksheets(„Hilf“).Columns(1)>0 Then

(Syntax von ZählenWenn noch überprüfen)

Ja, coole Idee.

Danke Kristian für die Antwort

1.a)
Daher die Frage, ob es nicht generell sinnvoller ist, bestimmte Werte, die ich in Excel-Tabellen zwischenspeichere, lieber als public Variablen über Code zu verwalten?

Ich verwende die Dinger ja, um trotz eventueller Verschiebungen
von Spalten/Zeilen immer auf die richtigen Zellen zugreifen zu
können. Wenn ich die Namen jetzt weglasse und mir nur
Konstanten nach dem Motto Const xy As String = „A1:C10“
anlege, ist dieser Vorteil weg.

Das ist prinzipiell richtig, allerdings lese ich via in VBA gekapseltem SQL-Code Daten aus einer DB aus. Vergebe einzelnen Werten Namen, um anschließend finanzmathematische Fkt.s anzuwenden. Danach schreibe ich die Werte wieder zurück in die DB-Tabelle.
Daher kommt ein Verschieben der Namen nicht in Frage, da die Namen und Datenfelder eh nur temporär gültig sind. Aber es sind sehr viele!
Über Code, würde ich mir die Namensgebung sparen, müsste allerdings über Variablen die Werte einlesen.

Vielmehr lege ich mir immer für jeden Namen eine Konstante an, die
den Namen selbst
beinhaltet, damit ich bei einer eventuellen Änderung des
Namens in der Tabelle nur einmal im Code ändern muss.

Guter Tipp, den imitiere ich!! :wink:

2.a) Kann ich in der Exceltabelle bereits vergebene Namensfelder wieder löschen?

Da man welche anlegen kann, müsste man sie auch wieder löschen
können. Guck mal in der Hilfe nach dem „Names“-Objekt.

Habe leider nix gefunden.

Habe leider nix gefunden.

Wieso nix gefunden? Du musst doch nur irgendwo im Codefenster „Names“ eingeben, mit dem Cursor draufgehen und F1 drücken. Schon bist Du da. Dort dann noch auf „Names“ klicken, dann auf „Name“, und schon findest Du dieses Beispiel:

ActiveWorkbook.Names("mySortRange").Delete

Kristian

Namensfelder können in Excelmappen für Bereiche vergeben werden. Leider stoße ich bei einem umfangreichen Prg. an das Limit von Excel.

Kennt jemand den max. Wert der Namensfelder in EXCEL 2003?

Also wenn Du schon ans Limit gestoßen bist, müsstest Du den Max-Wert doch eigentlich kennen. Ich habe mal versucht, ein paar Namen anzulegen, habe dann aber bei knapp 80000 aufgehört. Also die reine Anzahl scheint nicht so schnell begrenzt zu sein. Hier der Test-Code:

Sub test()
Dim i As Long
 On Error Resume Next
 i = 1
 Err.Clear
 While Err.Number = 0
 ActiveWorkbook.Names.Add "name" & i, "A" & i
 i = i + 1
 Wend
 MsgBox i
 On Error GoTo 0
End Sub

Zu bemerken ist, dass als Verweis offenbar auch sinnlose Sache angegeben werden können, denn ab i>65536 werden ungültige Verweise produziert. Das Juckt Excel allerdings wenig. Die Namen erscheinen alle in der Namensliste. Allerdings funktionieren sie nicht, auch wenn ein sinnvoller Verweis dahinter steht :wink: Liegt wahrscheinlich daran, dass der Tabellenbezug fehlt. Wobei … nein, das sollte egal sein.

Soweit nur schnell dazu.
Kristian

Wieso nix gefunden? Du musst doch nur irgendwo im Codefenster
„Names“ eingeben, mit dem Cursor draufgehen und F1 drücken.
Schon bist Du da. Dort dann noch auf „Names“ klicken, dann auf
„Name“, und schon findest Du dieses
Beispiel:

ActiveWorkbook.Names(„mySortRange“).Delete

Kristian

Danke Kristian,
ich hatte in der Excel-Hilfe nach „names“ gesucht und fälschlicherweise nicht in der IDE… (Ich Anfänger - ich :smile:)

o.g. Code funzt perfekt! Nochmals vielen Dank, ich habe wieder etwas dazu gelernt.