Excel - Hallo, ist es möglich, dass ich einen Wert in eine Zelle schreibe und er automatisch multipliziert wird, ohne einen Bezug zu einem anderen Feld?
Hallo,
ich habe das Problem, dass ich es nicht hinbekomme, einen Wert in seiner Zelle zu multiplizieren ohne in diesem eine Formel (bspw.: =100*1.05) oder einen Bezug zu einem fremden Feld zu nutzen.
Genauer gesagt,
ich möchte die Anzahl der Quadratmeter (250qm) *( den Quadratmeterpreis (100€) * 1.05 ) zusammen rechnen ohne im Feld für den Quadratmeterpreis eine Formel drinnen stehen zu haben oder einen Bezug zu diesem. :)
AnzQM €/QM Gesamtkosten
250 100(*1.05) 26,250.00€
Habe das hier:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 Then '(anpassen: 1 für Spalte A, 2 für B usw.)
On Error GoTo ErrorHandler
Application.EnableEvents = False
Target.Value = Target.Value * 0.5
ErrorHandler:
Application.EnableEvents = True
End If
End Sub
im Netz gefunden, es multipliziert mir aber immer die ganze Spalte. Da ich mich überhaupt nicht mit programmieren und VBA auskenne, benötige ich dringend Hilfe.
Dafür schonmal im vor hinaus DANKE <3
Gruß Luca
3 Antworten
Das Makro, das du da verwendest wird jedes mal aufgerufen, wenn sich etwas auf dem Tabellenblatt ändert und dann auch für alle Zellen angewendet. Du willst es aber nur auf die Zelle, die sich geändert hat anwenden. Ich denke das einfachste ist eine Überprüfung einzubauen bzw. zu gucken, ob die Zelle gleich der markierten Zelle ist:
If Selection.Address = Target.Address then
Target.Value = Target.Value * 0.5
End if
Ggf. solltest du weitere Einschränkungen einfügen, da die Funktion natürlich auf alle Zellen (Texte usw.) angwendet wird.
Du musst dafür sorgen, dass die Zeile mit der Multiplikation mit 0,5 nur ausgeführt wird, wenn das Ziel die gerade ausgewählte Zelle ist. Also einfach die Zeile "Target.Value = Target.Value * 0.5" durch meinen Code austauschen.
Wenn du Änderungen in speziell einer Zelle abfangen willst, kannst du statt
If Target.Column = 5 Then
schreiben:
If Target.Address = "$B$5"
Der Komfortgewinn im Vergleich zu Formeln ist jedoch minimal. Man muss sogar das xlsm-Format nutzen und Makros zulassen.
Dennoch wird das immer mal wieder gerne gefragt.
An alle Frager und Antworter dieses Threads:
Es wird durch dieses Ereignis nicht die Spalte, sondern genau nur die aktive Zelle gerechnet, so wie gewünscht. Wie kommt Ihr auf "ganze Spalte"? Hier nochmal wiederholt für einen Bereich von E1 bis E4:
Private Sub Worksheet_Change(ByVal T As Range)
If T.Column = 5 And T.Row < 5 Then
Application.EnableEvents = False
T = T.Value * 0.5
Application.EnableEvents = True
End If
End Sub
Okay, danke für die schnelle Antwort, jedoch bin ich etwas überfordert mit dem ganzen VBA Zeug. Sprich ich habe nicht ganz verstanden was ich machen soll. :/