Excel/VBA: Wert aus Zelle kopieren?
Moin, Ich habe in Zelle A3 eine Formel hinterlegt.
in Zelle A5 soll nun der Wert ausgegeben werden FEST (also einmalig, nicht, dass sich A5 ändert, wenn sich A3 ändert, dann ware es ja einfach =A3...)
Jemand eine Idee? Auch gerne VBA.
5 Antworten
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A3")) Is Nothing Then
Dim OldValue As Variant
Application.EnableEvents = False
Application.Undo
OldValue = Target.Value
Application.Undo
Application.EnableEvents = True
If OldValue <> Target.Value Then
'OldValue to new Cell
End If
End If
End Sub
Meine Version:
Range("K14").Select
Selection.Copy
Range("M14").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Woher soll Excel denn wissen, genau welchen Wert du fest haben willst?
Nehmen wir an, die Formel gibt 1 zurück. Dann ändert sich ein Parameter und es wird 2 zurück gegeben. Eine weitere Änderung der Parameter für die Formel bewirkt, dass sie 3 zurück gibt.
Irgendwie muss Excel wissen, dass du zum Beispiel die 2 haben möchtest und weitere Änderungen ignorieren möchtest.
Dafür könnte man sich ein Makro aufzeichnen, welches A3 kopiert und den Wert in eine bestimmte Zelle schreibt (hier A5). Dieses Makro kann man dann hinter eine Schaltfläche legen. Aber um die manuelle Auslösung des Kopiervorgangs kommst du nicht herum.
Du kannst selbstverständlich auch direkt zu dem Zeitpunkt, zu dem die 2 in der Formelzelle steht, den Wert mit rechter Maustaste in die Zielzelle kopieren. Dann sparst du dir die Kopierschaltfläche.
Falls es sich um das Tagesdatum handelt (HEUTE()), kannst du wie oben beschrieben vorgehen.
Einen kleinen Tipp möchte ich aber noch nachschieben: Das Tagesdatum kannst du auch einfach als Wert mit der Tastenkombination Strg+. einfügen.
Nur mal so:
Range("K14").Select
Selection.Copy
Range("M14").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
"xlPasteValues" war die Kunst :P
Im Zweifelsfall musst du ihn fragen, wie er es gerne hätte, bzw. die Problematik mit ihm besprechen.
Ich würde das mit einem Ereignismakro in A5 lösen und zwar per Doppelklick.
SO würde bei einem Doppelklick in A5 der Wert aus A3 eingetragen.
Erst beim nächsten Doppelklick wird er geändert:
Diesen Code ins Modul des Tabellenblattes (wenn Du nicht weist wie, frag nochmal nach):
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A5")) Is Nothing Then
Target.Value = Range("A3").Value
Cancel = True
End If
End Sub
Hilft Dir das?
Danke! Ich habe per Makro aufgezeichnet, und das raus bekommen: geht auch:
Range("K14").Select
Selection.Copy
Range("M14").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
sinnvoll ist sowas ja nur, wenn man eine Liste erstellt: also:
- gesternabend: A3-Wert-1 A5-Wert
- heutemorgen: A3-Wert-2 A5-Wert
- heutemittag: A3-Wert-3 A5-Wert
- usw
Wenn du sowas willst (zB bei jeder Änderung Datum/Zeiteintrag): sowas lässt sich relativ einfach erstellen, auch für Änderungen in mehreren Zellen, aber nicht jetzt ins Blaue hinein.
Du könntest sogar die Formel festhalten mit .Range("Formelzelle").Formula
das ich die Formel übertragen kann weiß ich, aber das brauch ich nicht, danke trotzdem für den Hinweis!
setz dir irgendwo ein fleck den man im tabellenblatt oder userform nicht sieht und knüpfe dann die bedingung daran
und was soll das bringen? Der Zellwert ändert sich bei Änderung der Ursprungszelle doch trotzdem
Sub, du bist auch immer da wenns um Excel geht :P Danke, ich versuch`s mal mit nem Makro.. Mein Chef ist sehr kreativ was seine Ideen angeht ^^