Einfache Berechnung mittels Makro

Hallo zusammen,
ich versuche ein Makro zu erstellen, welchen zwei simple Schritte der Preiskalkulation durchführt.

A B C D
1 STK PpSTK PGES EK
2 5 - - 100

Aus Feld C2 soll das Makro gestartet werden, den Nutzer bitten seine Kalkulation einzugeben und B2=EK*Eingegebener Wert, sowie C2=A2*B2 ausfüllen.
In meiner bisherigen Version (s.u.) erhalte ich folgende Fehlermeldung:
Laufzeitfehler 1004: Anwendungs- oder objektdefinierter Fehler

Sub Kalkulation()

’ Kalkulation Makro
’ Makro am 01.09.2008 von Nutzer aufgezeichnet

Eingabe = InputBox(„Bitte Kalkulation eingeben“)
Range(„B2“).Select
ActiveCell.FormulaR1C1 = „=RC[2]*[Eingabe]“
Range(„C2“).Select
ActiveCell.FormulaR1C1 = „=RC[-2]*RC[-1]“
Range(„C2“).Select
End Sub

Ich würde mich sehr über Lösungsvorschläge freuen.
Eine weitere Frage: In wiefern wäre es möglich mehrere Zellen in der C-Spalte zu markieren und dementsprechend im Makro zur nächsten markierten Zelle zu springen und dort die oben beschriebenen Aktionen durchzuführen?
Danke für die Aufmerksamkeit und Mühe
Liebe Grüße

Hallo Ingo,

Sub Kalkulation()

’ Kalkulation Makro
’ Makro am 01.09.2008 von Nutzer aufgezeichnet

Eingabe = InputBox(„Bitte Kalkulation eingeben“)
Range(„B2“).Select
ActiveCell.FormulaR1C1 = „=RC[2]*[Eingabe]“
Range(„C2“).Select
ActiveCell.FormulaR1C1 = „=RC[-2]*RC[-1]“
Range(„C2“).Select
End Sub

Ich sehe in diesem Makro keine wesentliche Funktionalität, im Gegenteil:
Die Formeln legt man in dem entsprechenden Zellenbereich vor und der Anwender gibt seinen Eingabe in B2 ein und fertig. Warum muss das Setzen der Formeln unbedingt zur Eingabezeit geschehen?

Gruß HW
Hans W. Hofmann

Hi Ingo,

Fehlermeldung:
Laufzeitfehler 1004: Anwendungs- oder objektdefinierter Fehler

gib bitte immer an, in welcher Codezeile der Debugger steht, sofern nöglich.

Sub Kalkulation()
’ Kalkulation Makro
’ Makro am 01.09.2008 von Nutzer aufgezeichnet
Dim Eingabe
Eingabe = InputBox(„Bitte Kalkulation eingeben“)
Range(„B2“).FormulaR1C1 = „=RC[2]*“ & Eingabe
Range(„C2“).FormulaR1C1 = „=RC[-2]*RC[-1]“
Range(„C2“).Select
End Sub

Aber warum langt dir das nicht:

Tabellenblatt: [Mappe2]!Tabelle2
 │ A │ B │ C │ D │ E │
──┼─────┼───────┼──────┼─────┼────────┤
1 │ STK │ PpSTK │ PGES │ EK │ Faktor │
──┼─────┼───────┼──────┼─────┼────────┤
2 │ 5 │ 123 │ 615 │ 100 │ 1,23 │
──┴─────┴───────┴──────┴─────┴────────┘
Benutzte Formeln:
B2: =D2\*E2
C2: =A2\*B2

A1:E2
haben das Zahlenformat: Standard

Tabellendarstellung erreicht mit dem Code in FAQ:2363

Eine weitere Frage: In wiefern wäre es möglich mehrere Zellen
in der C-Spalte zu markieren und dementsprechend im Makro zur
nächsten markierten Zelle zu springen und dort die oben
beschriebenen Aktionen durchzuführen?

Soll die Markierung von Zellen in C schon das Makro starten?

Mir ist noch Einiges unklar was du da genau möchtest.

Gruß
Reinhard

Vielen Dank für die Antworten. Ursprünglich wollte ich einen relativen Zellbezug einrichten, welches ich wie folgt realisiert habe:

Sub Kalkulation()
Dim Eingabe
Eingabe = InputBox(„Bitte Kalkulation eingeben“)
ActiveCell.Offset(0, -1).FormulaR1C1 = „=RC[2]*“ & Eingabe
ActiveCell.Offset(0, 0).FormulaR1C1 = „=RC[-2]*RC[-1]“
End Sub

Bei Eingaben mit Nachkommastellen, erhalte ich jedoch wieder die gleiche Fehlermeldung: „Laufzeitfehler 1004“
Der Debugger gibt folgende Zeile als Problem an:

ActiveCell.Offset(0, -1).FormulaR1C1 = „=RC[2]*“ & Eingabe

Vielen Dank für eure Hilfe im Voraus!

Bei Eingaben mit Nachkommastellen, erhalte ich jedoch wieder
die gleiche Fehlermeldung: „Laufzeitfehler 1004“
Der Debugger gibt folgende Zeile als Problem an:
ActiveCell.Offset(0, -1).FormulaR1C1 = „=RC[2]*“ & Eingabe

Hi Ingo,
probiers mal so:

Sub Kalkulation()
Dim Eingabe
Eingabe = InputBox(„Bitte Kalkulation eingeben“)
ActiveCell.Offset(0, -1).FormulaR1C1 = „=RC[2]*“ & Replace(Eingabe, „,“, „.“)
ActiveCell.Offset(0, 0).FormulaR1C1 = „=RC[-2]*RC[-1]“
End Sub

aber warum du da Vba brauchst und Formeln nicht reichen weiß ich noch nicht.

Gruß
reinhard