Discussion:
Formel per VBA in Zelle schreiben
(zu alt für eine Antwort)
Helmut Fischer
2006-12-01 16:32:34 UTC
Permalink
Hallo,

ich möchte eine Formel (in Deutscher Notation) in eine Zelle
schreiben. Die Kriterien sind recht komplex, tun hier aber nichts zur
Sache, die Formeln sind einigermaßen komplex, daher kommt englische
Notation nicht in Frage. Leider klappt es allerdings schon mit der
einfachsten =Summe(A1:A2) nicht. Die Formel wird zwar in die Zelle
geschrieben, aber es erscheint #Name und erst wenn man in die Zelle
geht und mit Enter verläßt funzt die Formel.
Bisherige Versuche mit
.Cells(10, 2).FormulaLocal
.Cells(10, 2).Formula
.Cells(10, 2).FormulaR1C1
.Cells(10, 2).Value
liefern alle das gleiche Ergebnis.

Wo klemmts bzw wie gehts - DANKE im voraus

Gruss und esW

Helle
Robert Gelbmann
2006-12-01 17:03:25 UTC
Permalink
Hallo Helmut!
Post by Helmut Fischer
ich möchte eine Formel (in Deutscher Notation) in eine Zelle
schreiben. Die Kriterien sind recht komplex, tun hier aber nichts zur
Sache, die Formeln sind einigermaßen komplex, daher kommt englische
Notation nicht in Frage. Leider klappt es allerdings schon mit der
einfachsten =Summe(A1:A2) nicht. Die Formel wird zwar in die Zelle
geschrieben, aber es erscheint #Name und erst wenn man in die Zelle
geht und mit Enter verläßt funzt die Formel.
Bisherige Versuche mit
.Cells(10, 2).FormulaLocal
.Cells(10, 2).Formula
.Cells(10, 2).FormulaR1C1
[...]
Wenn es unbedingt die deutschsprachige Notation mit A1-Bezügen sein
soll, dann warst du mit FormulaLocal schon richtig:


.Cells(10, 2).FormulaLocal = "=SUMME(A1:A2)"


P.S.: Je nach Anwendungsbeispiel kann es jedoch wesentlich sinnvoller
sein, die R1C1-Variante zu verwenden!
--
In der Hoffnung geholfen zu haben, verbleibe ich mit einem leisen


Servus aus Wien,
-Robert Gelbmann-
---
The world is quiet here.
Helmut Fischer
2006-12-04 08:36:21 UTC
Permalink
Hi Robert,
Post by Robert Gelbmann
Hallo Helmut!
Post by Helmut Fischer
ich möchte eine Formel (in Deutscher Notation) in eine Zelle
schreiben. Die Kriterien sind recht komplex, tun hier aber nichts zur
Sache, die Formeln sind einigermaßen komplex, daher kommt englische
Notation nicht in Frage. Leider klappt es allerdings schon mit der
einfachsten =Summe(A1:A2) nicht. Die Formel wird zwar in die Zelle
geschrieben, aber es erscheint #Name und erst wenn man in die Zelle
geht und mit Enter verläßt funzt die Formel.
Bisherige Versuche mit
.Cells(10, 2).FormulaLocal
.Cells(10, 2).Formula
.Cells(10, 2).FormulaR1C1
[...]
Wenn es unbedingt die deutschsprachige Notation mit A1-Bezügen sein soll,
.Cells(10, 2).FormulaLocal = "=SUMME(A1:A2)"
leider wird dann #Name als Ergebnis angezeigt und erst wenn man manuell in
die Zelle reinklickt und mit Enter rausgeht funktioniert diese dann auch.
Hast Du eine Idee, woher dieser Effet kommen könnte?
Post by Robert Gelbmann
P.S.: Je nach Anwendungsbeispiel kann es jedoch wesentlich sinnvoller
sein, die R1C1-Variante zu verwenden!
zum Beispiel? (vielleicht hilft es mir ja?!?)
Post by Robert Gelbmann
--
In der Hoffnung geholfen zu haben, verbleibe ich mit einem leisen
Alleine der Versuch ist schln ein Dank wert, vielleicht fruchtet es ja auch
noch ;->

Gruss

Helle
Post by Robert Gelbmann
Servus aus Wien,
-Robert Gelbmann-
---
The world is quiet here.
Robert Gelbmann
2006-12-04 13:22:15 UTC
Permalink
Hallo Helmut!
Post by Helmut Fischer
Post by Robert Gelbmann
.Cells(10, 2).FormulaLocal = "=SUMME(A1:A2)"
leider wird dann #Name als Ergebnis angezeigt und erst wenn man
manuell in die Zelle reinklickt und mit Enter rausgeht funktioniert
diese dann auch. Hast Du eine Idee, woher dieser Effet kommen könnte?
Also:

- entweder hast du das "Local" von "FormulaLocal" vergessen

oder:

- du versuchst das ganze vielleicht mit einer Analyse-Funktion oder
sonstigen Nicht-integrierten Funktion? Hast du es zuerst mit dem oben
genannten Beispiel ausprobiert?


(Es ist aber schon eine *deutschsprachige" Excel-Version, oder?)


P.S.: Welchen Grund hast du eigentlich für die "deutschsprachige"
Notation?
Das führt eigentlich nur zu Problemen, weil es dann nicht einmal auf
allen PC's mit einer deutschsprachigen Excel-Version funktioniert, weil
es ja auch andere Dezimaltrennzeichen und Tausendertrennzeichen geben
kann (individuell eingestellt oder auch generell in der schönen
Schweiz).
--
In der Hoffnung geholfen zu haben, verbleibe ich mit einem leisen


Servus aus Wien,
-Robert Gelbmann-
---
The world is quiet here.
Helmut Fischer
2006-12-04 16:00:10 UTC
Permalink
Hallo Robert,
Post by Robert Gelbmann
Hallo Helmut!
Post by Helmut Fischer
Post by Robert Gelbmann
.Cells(10, 2).FormulaLocal = "=SUMME(A1:A2)"
leider wird dann #Name als Ergebnis angezeigt und erst wenn man manuell
in die Zelle reinklickt und mit Enter rausgeht funktioniert diese dann
auch. Hast Du eine Idee, woher dieser Effet kommen könnte?
- entweder hast du das "Local" von "FormulaLocal" vergessen
mit und ohne probiert
Post by Robert Gelbmann
- du versuchst das ganze vielleicht mit einer Analyse-Funktion oder
sonstigen Nicht-integrierten Funktion? Hast du es zuerst mit dem oben
genannten Beispiel ausprobiert?
=Summe() ist noch der Stand der Dinge, später soll =Wenn() hinzukommen.
Post by Robert Gelbmann
(Es ist aber schon eine *deutschsprachige" Excel-Version, oder?)
Ja
Post by Robert Gelbmann
P.S.: Welchen Grund hast du eigentlich für die "deutschsprachige"
Notation?
Es gibt eine Liste mit Spalten. In den Spalten stehen die Formeln.
durch Arbeitsschritt (A) werden ein paar dieser Formeln durch konkret
getippte Werte überschrieben
Ab und zu kommt Arbeitsschritt (B) der sagt "jetzt macht es Sinn wieder ein
paar der Formeln zu Rekonstruieren"
Die Formeln sind nun einmal in deutscher Notation vorhanden und das Ganze
wiederholt sich über mehrere Spalten mit leicht unterscheidlichen Formeln.
Wie läßt sich am schnellsten eine existierende deutsche Formel in eine
englische wandeln?
Post by Robert Gelbmann
Das führt eigentlich nur zu Problemen, weil es dann nicht einmal auf allen
PC's mit einer deutschsprachigen Excel-Version funktioniert, weil es ja
auch andere Dezimaltrennzeichen und Tausendertrennzeichen geben kann
(individuell eingestellt oder auch generell in der schönen Schweiz).
weiß isch, interessiert in diesem Fall die Philosophen.
Post by Robert Gelbmann
--
In der Hoffnung geholfen zu haben, verbleibe ich mit einem leisen
Servus aus Wien,
-Robert Gelbmann-
---
The world is quiet here.
Danke, einer geht noch?

Helle
Thomas Ramel
2006-12-04 17:02:17 UTC
Permalink
Grüezi Helmut

Helmut Fischer schrieb am 04.12.2006
Post by Helmut Fischer
Post by Robert Gelbmann
P.S.: Welchen Grund hast du eigentlich für die "deutschsprachige"
Notation?
Es gibt eine Liste mit Spalten. In den Spalten stehen die Formeln.
durch Arbeitsschritt (A) werden ein paar dieser Formeln durch konkret
getippte Werte überschrieben
Ab und zu kommt Arbeitsschritt (B) der sagt "jetzt macht es Sinn wieder ein
paar der Formeln zu Rekonstruieren"
Die Formeln sind nun einmal in deutscher Notation vorhanden und das Ganze
wiederholt sich über mehrere Spalten mit leicht unterscheidlichen Formeln.
Hmmm, wenn die Formeln vorhanden sind, dann schreibe sie jeweils in eine
Zelle der Spalte, die nicht von den Usern verändert wird/werden kann.

Kopiere dann die Formel und füge sie ganz einfach über den ganzen Bereich
ein - dazu ist es nicht notwendig, diese Formeln auch in VBA zu 'kennen',
sprich der Inhalt der Zellen ist dir dann völlig egal (und so auch die
Notation).
Wichtig ist allenfalls, dass die absoute/relative Notation der
Ursprungsformel stimmt.

Range("A1:A10").Formula = Range("A1").Formula

nimmt die Formel aus A1 und kopiert sie unter Anpassung der relativen
Bezüge in den ganzen Bereich A1:A10



Mit freundlichen Grüssen
Thomas Ramel
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2000 SP-3]
Microsoft Excel - Die ExpertenTipps
Helmut Fischer
2006-12-05 09:43:03 UTC
Permalink
Hallo Robert,

Danke für Deine Ausdauer, ich habe den entscheidenden Fehler auf
meiner Seite gefunden. Am Ende war es ein kleiner Syntaxfehler, der
mich zur Verzweiflung gebracht hat.

Merci vielmals

Helle
Robert Gelbmann
2006-12-05 10:36:56 UTC
Permalink
Hallo Helmut!
Post by Helmut Fischer
Danke für Deine Ausdauer, ich habe den entscheidenden Fehler auf
meiner Seite gefunden. Am Ende war es ein kleiner Syntaxfehler, der
mich zur Verzweiflung gebracht hat.
Danke auch für das Feedback!
(Was lange währt, wird endlich gut ...)
;-)
--
Servus aus Wien,
-Robert Gelbmann-
---
The world is quiet here.
Claus Busch
2006-12-01 17:10:53 UTC
Permalink
Hallo Helmut,
Post by Helmut Fischer
ich möchte eine Formel (in Deutscher Notation) in eine Zelle
schreiben. Die Kriterien sind recht komplex, tun hier aber nichts zur
Sache, die Formeln sind einigermaßen komplex, daher kommt englische
Notation nicht in Frage. Leider klappt es allerdings schon mit der
einfachsten =Summe(A1:A2) nicht. Die Formel wird zwar in die Zelle
geschrieben, aber es erscheint #Name und erst wenn man in die Zelle
geht und mit Enter verläßt funzt die Formel.
Bisherige Versuche mit
.Cells(10, 2).FormulaLocal
.Cells(10, 2).Formula
.Cells(10, 2).FormulaR1C1
.Cells(10, 2).Value
liefern alle das gleiche Ergebnis.
vielleicht hängt es am Referenzieren. Bei mir funktioniert dies
einwandfrei:
With Sheets("Tabelle1")
.Cells(10, 2).FormulaLocal = "=Summe(A1:A10)"
.Cells(11, 2).Formula = "=Sum(A1:A10)"
End With

Vielleicht schreibst du mal, welche Formel du in die Zelle hinein bringen
willst.
--
Mit freundlichen Grüssen
Claus Busch

Win XP Prof SP2; Office 2000 SP3
claus_busch(at)t-online.de
Helmut Fischer
2006-12-04 08:33:19 UTC
Permalink
Hallo Claus,

"Claus Busch" <***@nospam.de> schrieb im Newsbeitrag news:5m5n17f542w1$***@40tude.net...
...
Post by Claus Busch
Post by Helmut Fischer
Bisherige Versuche mit
.Cells(10, 2).FormulaLocal
.Cells(10, 2).Formula
.Cells(10, 2).FormulaR1C1
.Cells(10, 2).Value
liefern alle das gleiche Ergebnis.
vielleicht hängt es am Referenzieren. Bei mir funktioniert dies
Was meinst Du damit "referenzieren"? ich suche den Teufel im Detail, daher
beschreibe mal bitte, wo Du einen Fehler vermutest.
Post by Claus Busch
With Sheets("Tabelle1")
.Cells(10, 2).FormulaLocal = "=Summe(A1:A10)"
.Cells(11, 2).Formula = "=Sum(A1:A10)"
End With
Vielleicht schreibst du mal, welche Formel du in die Zelle hinein bringen
willst.
=Summe(A1)
bringt den Effekt, dass dies schön in der Editzeile steht aber mit #Name
erscheint. Sobald man danach in die Zelle reingeht und mit Enter raus
funktioniert die Formel. Nur das bringt nichts, da es im realen Fall nicht
unbedingt schnell nachzuvollziehen ist, wo die Formel eingefügt wurde.
Weiterhin sind die einzufügenden Formeln natürlich wesentlich komplexer,
aber so weit sind wir noch nicht, wenn die einfachst noch nicht geht.
Post by Claus Busch
--
Mit freundlichen Grüssen
Claus Busch
Win XP Prof SP2; Office 2000 SP3
claus_busch(at)t-online.de
Danke und Gruss

Helle
Claus Busch
2006-12-04 08:53:32 UTC
Permalink
Hallo Helmut,
Post by Helmut Fischer
Was meinst Du damit "referenzieren"? ich suche den Teufel im Detail, daher
beschreibe mal bitte, wo Du einen Fehler vermutest.
Post by Claus Busch
With Sheets("Tabelle1")
.Cells(10, 2).FormulaLocal = "=Summe(A1:A10)"
.Cells(11, 2).Formula = "=Sum(A1:A10)"
End With
Vielleicht schreibst du mal, welche Formel du in die Zelle hinein bringen
willst.
=Summe(A1)
bringt den Effekt, dass dies schön in der Editzeile steht aber mit #Name
erscheint. Sobald man danach in die Zelle reingeht und mit Enter raus
funktioniert die Formel. Nur das bringt nichts, da es im realen Fall nicht
unbedingt schnell nachzuvollziehen ist, wo die Formel eingefügt wurde.
Weiterhin sind die einzufügenden Formeln natürlich wesentlich komplexer,
aber so weit sind wir noch nicht, wenn die einfachst noch nicht geht.
nomralerweise sollten beide Formeln funktionieren und zum gleichen Ergebnis
kommen. Hast du den Code kopiert und eingefügt? Schau dir mal in der Hilfe
die Problembehandlung bei Fehler #NAME an. Vielleicht hilft dir das weiter.
Hast du es mal in einer neuen Mappe probiert mit dieser Syntax? Könnte ja
sein, dass deine Mappe einen Schaden hat.
--
Mit freundlichen Grüssen
Claus Busch

Win XP Prof SP2; Office 2000 SP3
claus_busch(at)t-online.de
Loading...