Excel/VBA: Wert aus Zelle kopieren?

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
Woher ich das weiß:Studium / Ausbildung – Informatik Studium
iInjection 
Fragesteller
 23.05.2019, 14:56

Meine Version:

Range("K14").Select
    Selection.Copy
    Range("M14").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
0

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.

Woher ich das weiß:eigene Erfahrung
iInjection 
Fragesteller
 23.05.2019, 12:22

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 ^^

0
Suboptimierer  23.05.2019, 12:23
@iInjection

Im Zweifelsfall musst du ihn fragen, wie er es gerne hätte, bzw. die Problematik mit ihm besprechen.

0
iInjection 
Fragesteller
 23.05.2019, 12:24

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

1

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?

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)
iInjection 
Fragesteller
 23.05.2019, 14:54

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
0

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

iInjection 
Fragesteller
 23.05.2019, 14:55

das ich die Formel übertragen kann weiß ich, aber das brauch ich nicht, danke trotzdem für den Hinweis!

0

setz dir irgendwo ein fleck den man im tabellenblatt oder userform nicht sieht und knüpfe dann die bedingung daran

Woher ich das weiß:Studium / Ausbildung – Abgeschlossene Ausbildung
Esskah  23.05.2019, 15:48

und was soll das bringen? Der Zellwert ändert sich bei Änderung der Ursprungszelle doch trotzdem

0
M2SSD  23.05.2019, 15:49
@Esskah

dann kann er mit VBA eine abfrage mittels if einbinden und hat immer den aktuellen stand oder forherstand auch wenn die mappe geschlossen wird was bei einer normalen constante in VBA nicht möglich ist da sie nur einen wert haben kann der sich nicht verändert

0