PDA

Vollständige Version anzeigen : #Name


Rudi G
25.03.2009, 13:24
Hi,

ich wollte grade mittles Makro in eine Zelle (D9) ein Datum zusammensetzen:


Range("D9").Select

ActiveCell.FormulaR1C1 = "=""01.01."" & Jahr(L4)"


in L4 steht das Datum 28.02.2009,

in D9 habe ich als Ergebnis nur #Name

hat jemand eine Idee was ich falsch gemacht habe?

BoskoBiati
25.03.2009, 13:32
ActiveCell.FormulaR1C1 = "=" & "01.01."" & Jahr(L4)"

IngGi
25.03.2009, 13:45
Hallo Rudi,

grundsätzlich spricht VBA immer englisch. Du musst daher in Formeln, die du in eine Zelle schreibst, englische Funktionsbezeichnungen verwenden:
Range("D9").Formula = "=""01.01.""&Year(L4)"
Oder du sagst VBA, dass du die Funktionsnamen in der Sprache entsprechend der Regionaleinstellungen (also deutsch) verwenden willst:
Range("D9").FormulaLocal = "=""01.01.""&Jahr(L4)"
Hast du übrigens bemerkt, dass ich statt FormulaR1C1 einfach Formula verwendet habe? Der Unterschied liegt in der Schreibweise der Zellbezüge. Wenn du einen Bezug wie L4 verwendest, dann entspricht das der sogenannten A1-Schreibweise. Hier musst du Formula ohne R1C1 verwenden! Die Zelle L4 lässt sich auch als Z4S12 bezeichnen, also Zeile 4, Spalte 12. Das wäre dann die Z1S1- oder eben englisch R1C1-Schreibweise. Und wenn du dann noch gleichzeitig deutsche Funktionsnamen verwenden willst, gibt es auch FormulaR1C1Local.

Noch etwas. Du musst eine Zelle nicht extra auswählen, um etwas hineinschreiben zu können. Wie du oben siehst, habe ich statt
Range("D9").Select
ActiveCell.Formula...
einfach direkt
Range("D9").Formula...
verwendet.

Und vielleicht noch abschließend. Du musst natürlich nicht unbedingt eine Formel in die Zelle schreiben, sondern kannst das gewünschte Datum auch in VBA zusammenstoppeln und dann gleich als Wert in die Zelle schreiben:
Range("D9") = "01.01." & Year(Range("L4"))

Gruß Ingolf

Rudi G
25.03.2009, 13:46
Hi,

also nun bekomme ich :

Laufzeitfehler 1004
Anwendungs-oder objektdefinierter Fehler

Rudi G
25.03.2009, 13:56
Hi,
ich habe es gelöst:
ich bin einfach auf ein anderes datum gegangen:
ActiveCell.FormulaLocal = "=""01.01."" & Jahr(Altbestand!AB2)"

trotzdem vielen Dank

IngGi
25.03.2009, 14:18
Hallo Rudi,

dass es jetzt funktioniert, liegt aber nicht an dem neuen Zellbezug (Altbestand!AB2 statt L4), sondern an dem Wechsel von FormulaR1C1 auf FormulaLocal. :p
ActiveCell.FormulaLocal = "=""01.01."" & Jahr(L4)"
würde auch funktionieren. ;)

Gruß Ingolf