Vielen Dank schon mal für die Antwort. Ich versuche nochmal genauer zu werden.
Ich habe ein Workbook mit einem Diagramm und dann mehreren Datensheets.
Das Diagramm soll automatisch erweitert werden, wenn neue Daten in die einzelnen Sheets eingetragen werden. Ich hatte das so gelöst:
Neuen Namen definiert:
=BEREICH.VERSCHIEBEN(Datenblatt1!$E$1;1;0;ANZAHL2(Datenblatt1!$E:$E)-1)
Und dann für jedes Datenblatt so einen Namen definiert. Diese Namen konnte man dann im Diagramm als Datenquelle eintragen.
Das hat auch wunderbar funktioniert. Sobald neue Daten eingetragen wurden, wurde das Diagramm automatisch angepasst. Nun hab ich aber das Problem, dass ich hin und wieder neue Datenblätter hinzufügen muss. Da ich die Namen dann nicht alle manuell erstellen will, suche ich eine Lösung über VBA.
Das Makro soll zuerst einmal alle definierten Namen löschen. Soweit kein Problem. Beim automatischen Definieren treten dann allerdings Probleme auf.
Hier der Code den ich momentan verwende:
ActiveWorkbook.Names("dyn_X_Achse").Delete
[b]ActiveWorkbook.Names.Add Name:="dyn_X_Achse", RefersToR1C1:="=BEREICH.VERSCHIEBEN(" & Sheetname(1) & "!$A$1;1;0;ANZAHL2(" & Sheetname(1) & "!$A:$A)-1)"[/b]
For i = 1 To counter2
ActiveWorkbook.Names("dyn_Bereich_" & Mountpoint(i)).Delete
[b]ActiveWorkbook.Names.Add Name:="dyn_Bereich_" & Mountpoint(i), RefersToR1C1:="=BEREICH.VERSCHIEBEN(" & Sheetname(i) & "!$E$1;1;0;ANZAHL2(" & Sheetname(i) & "!$E:$E)-1)"[/b]
Next i
In dem Array Sheetname sind die Namen der einzelnen Blätter abgelegt.
In dem Array Mountpoint sind die Bezeichnungen einzelner Mountpoints abgelegt (MP1, MP2, usw)
Der erste Teil ist dazu da, um die X-Achse zu beschriften. Im zweiten Teil wird dann der tatsächliche Datenbereich benannt. Irgendwo in den fettgedruckten Teilen befindet sich ein Fehler in der Formel den ich einfach nicht finde. Wie gesagt, wenn ich das alles manuell in Excel eingebe, dann funktioniert es. Erst wenn ich per Makro und mit Arrays versuche diese Namen zu definieren spuckt er die Fehlermeldung aus, dass die Formel falsch wäre.
Holger schrieb am 23.12.2007 09:17:43:
Hallo Oldschool,
dein Code-Ausschnitt ist schwer nachzuvollziehen, zumals individuelle Namen enthalten sind. Die Bedeutung von "Bereich.Verschieben" und der durch Semikolon getrennten Parameter ist unklar.
Daher nur unscharfe Hinweise. Es würde mich aber interessieren, was dabei herauskommt.
Kann es sein, dass es "RefersTo" heißen muss, da du die Zellen nicht mit der R1C1-Schreibweise, sondern mit der A1-Schreibweise ansprichst? Muss der Name der Tabelle nicht mit Apostrophs versehen werden? Z.B. für den Bereich F14:H21 der Tebelle Blatt1: RefersToR1C1:= "='Blatt 1'!R14C6:R21C8".
Es würde mich freuen, wenn es klappen sollte, allerdings habe ich dieses Problem noch nie bearbeitet.
Frohes Fest
Holger
Oldschool schrieb am 21.12.2007 11:23:04:
Hallo,
Ich versuche mit einem Makro Namen für Formeln zu definieren. Das Array Sheetname enthält einen String. Wenn ich diesen String direkt eingebe ohne die Variable, dann funktioniert es. So allerdings sagt Excel mir, dass die Formel falsch ist und ich finde den Fehler einfach nicht.
ActiveWorkbook.Names.Add Name:="dyn_X_Achse", RefersToR1C1:="=BEREICH.VERSCHIEBEN(" & Sheetname(1) & "!$A$1;1;0;ANZAHL2(" & Sheetname(1) & "!$A:$A)-1)"
Vielleicht kann mir da jemand helfen? |