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?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.

Woher ich das weiß:Berufserfahrung
ladB2 
Fragesteller
 24.06.2021, 21:50

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. :/

0
TapRoot2021  24.06.2021, 21:51
@ladB2

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.

1

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

Woher ich das weiß:eigene Erfahrung