[EXCEL 2003] Fehler beim Schreiben einer Formel durch VBA.

Blendi

Aktives Mitglied
Hallo Fachmänner und Fachfrauen

Ich habe ein Makro unter Excel 2003 SP3 (unter Win XP) erstellt und hab jetzt ein blödes Problem.

Eigentlich ganz einfach, ich möchte in eine Zelle eine Formel eintragen lassen:

Formel = "=MAX('16.01.2012'!E:E)"
ActiveCell.FormulaR1C1 = Formel

Und was macht das liebe Excel? Es schreibt =MAX('16.01.2012'!E:e) in die Zelle und wegen dem kleinen e heisst es dann nur #NAME?.

Ich würde jetzt mal sagen, dass das ein Bug von Excel ist aber hat jemand von euch einen Tipp wie ich Excel dazu kriege die Formel korrekt einzutragen?

Nachtrag: Jetzt hab ich gerade gemerkt, dass das Problem noch ein bisschen komplizierter ist. Der Code läuft ja in einer Schleife bei der verschiedene Spalten verwendet werden. Wie gesagt macht er bei Spalte E =MAX('16.01.2012'!E:e). Bei Spalte Z schreibt das Makro dann komischerweise =MAX('16.01.2012'!'Z':'Z'). Bei den anderen Spalten schreibt er die Formel KORREKT aber ich bekomme trotzdem #NAME?. Markiere ich dann die Zelle und drück in der Eingabezeile Enter übernimmt Excel die Formel korrekt.

Komisch, komisch.

Vielen Dank

Walter
 
Zuletzt bearbeitet:

Blendi

Aktives Mitglied
Fehler gefunden

Hallo zusammen

Jetzt hab ich den Fehler noch selbst beheben können. Das Problem war, dass ich .formula und nicht .formulaR1C1 verwenden musste.

Ich danke trotzdem jedem, der sich überhaupt die Mühe gemacht hat dies zu lesen.

Gruss
Walter
 

Thomas Ramel

Stammgast
Grüezi Blendi

Das ist nur Zufall, dass das klappt, weil die Formel die du verwendest eine der wenigen ist, die in Englisch genau gleich geschrieben werden.

Wenn Du fürs Eintragen in die Zellen .Formula verwendest, dann musst Du die Formeln in VBA in Englischer Schreibweise erstellen.
Willst Du sie wie ich vermute in Deutscher Schreibweise zusammensetzen, dann verwende .FormulaLocal:

Formel = "=MAX('16.01.2012'!E:E)"
ActiveCell.FormulaLocal = Formel


Oder eben gleich direkt:

ActiveCell.FormulaLocal = "=MAX('16.01.2012'!E:E)"

Oder noch besser gleich sauber referenziert und ohne vorheriges .Activate und .Select:

Range("A10").FormulaLocal = "=MAX('16.01.2012'!E:E)"
 

Blendi

Aktives Mitglied
Danke!

Hallo Thomas

Ah! Wieder was gelernt. Ich müsste die Formeln in Englisch schreiben - oder eben FormulaLocal verwenden.

Vielen Dank für deine Hilfe!

Gruss
Walter
 
Oben