Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Zellen Inhalt kopieren und als Wert einfügen

Forumthread: Zellen Inhalt kopieren und als Wert einfügen

Zellen Inhalt kopieren und als Wert einfügen
09.06.2025 00:51:30
Siegfried Pütz
Guten Abend zusammen.
Ich benötige eine VBA Lösung. Habe schon etliches durchstöbert aber keine passende Lösung gefunden :-(
Folgendes: in der Zelle AI 2 steht der Wert 0,5€, der bedingt durch eine "Wenn Formel", erscheint aber sich nach erneutem Eintrag in der Formel ändert. Ist aber der Wert in der Zelle AI 2 = "0,5 €" ,soll dann dieser Wert kopiert und - wie rechte Maustaste "Wert einfügen " in der Zelle AN 2 erscheinen.

Des Weiteren: Oben beschriebenes bezieht sich auf eine Zelle. Erweitert: AI 2 - AI 9 und AI 2 - AL 9 kopieren sowie in AN 2 - AQ 9 einfügen.
Ich habe für jeden einzigen Eintrag ein Modul erstellt, das funktioniert (Zelle kopieren und als Wert einfügen). Dabei muss ich, bei erreichen des Wertes, den entsprechenden Button betätigen.

Frage: Kann man dafür einen VBA Code erstellen?

Grüße an Alle,
SiggiP
Anzeige

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen Inhalt kopieren und als Wert einfügen
09.06.2025 01:41:55
Gast
Hallo

bitte probiere einmal diesen Code aus, auf die Schnelle getestet.
Er setzt voraus, das die Eingabe, die zum Ergebnis 0,5 führt, in der gleichen Zeile stattfindet.
ER benötigt keinen Button. z.B. Eingabe in AH4 führt bei Ergebnis 0,5 zu Anzeige in Zelle AN4
Das Ergebnis wird wieder gelöscht, wenn der Wert > 0,5 wird. Ich hoffe das klappt bei dir.

mfg Piet

Private Sub Worksheet_Change(ByVal Target As Range)

If InStr(Target.Address, ":") Then Exit Sub

If Target.Row > 1 And Target.Row 10 Then
If Cells(Target.Row, "AI") = 0.5 Then
Cells(Target.Row, "AN") = Cells(Target.Row, "AI")
Else
Cells(Target.Row, "AN") = Empty 'AN löschen
End If
End If
End Sub
Anzeige
AW: Zellen Inhalt kopieren und als Wert einfügen
09.06.2025 02:32:19
Siegfried Pütz
Hallo Piet,
zuerst mal Danke für die schnelle Antwort.
Deinen Code habe ich ausprobiert. Der Eintrag in AN4 erscheint. Deinen Code habe ich versucht zu verstehen? Was ich nicht verstehe: Warum in Zelle AN4? Sind ja nur AI und AN in dem Code! Wieso das Ergebnis gerade in AN4 angezeigt wird, keine Ahnung :-(.
Danach wollte ich den Inhalt der Zelle AN4 löschen, geht aber nur wenn ich den Code entferne. das wäre ja kein Problem wenn ich vorher eine Kopie erstelle, weil die Datei jede Woche neu geöffnet wird.

Wenn Du mal Lust und Laune hast, kannst Du mir den Code ja mal erklären.

Vielen Dank

Gruß,
SiggiP
Anzeige
AW: Zellen Inhalt kopieren und als Wert einfügen
09.06.2025 17:48:38
Gast
Hallo Siggi

der Kollege Ralf hat dir die normale Change Version mit Intersect(Range) gezeigt.
Dazu mit einem sehr raffiniertem IFF Befehl, über den ich zweimal nachdenken musste.
Frage ist, ob dir das weiterhilft?? -> Mit Calculate hatte ich es probiert, klappte aber nicht!

Mein Code prüft, ob deine Eingabe in Zeile 2-9 erfolgt, aber -egal- in welcher Spalte!!
Statt Range verwende ich hier lieber Cells, mit Angabe der Spalte als -Buchstabe- statt Zahl.
Bei einer Eingabe prüfe ich, ob in dieser Zeile der Wert in Spalte "AI" 0,5 beträgt, oder nicht.
Entsprechend wird der Wert nach "AN" kopiert, oder AN wird wieder gelöscht.

Mein Code würde versagen, wenn deine Eingaben immer nur in -eine Zelle- erfolgt!
Dazu hattest du aber keine Angaben gemacht. So ging ich von der gleichen Zeile aus.
Wenn die Eingabe nur in einer Zelle erfolgt, musst du uns bitte genaue Angaben machen wo die Eingabe/n erfolgt!
** unten habe ich dir einen Code angehangen, wenn die Eingabe nur in eine Zelle erfolgt. Hier Zelle A1 (ggf. selbst ändern!!)

mfg Gast

Private Sub Worksheet_Change(ByVal Target As Range)

If InStr(Target.Address, ":") Then Exit Sub

'bitte deine Eingabe Adresse angeben
If Target.Address = "$A$1" Then
For Each AC In Range("AN2:AN9")
If AC.Value = 0.5 Then
AC.Offset(0, 5) = AC.Value
Else
AC.Offset(0, 5) = Empty
End If
Target.Select '** oder löschen
End If
End Sub

Anzeige
AW: Zellen Inhalt kopieren und als Wert einfügen
09.06.2025 22:53:23
Siegfried Pütz
Hallo Gast,
danke Dir für deine Antwort. Werde ich morgen testen. Bin gerade zurück von einem Geburtstag. Melde mich morgen.
Gruß,
SiggiP
AW: Zellen Inhalt kopieren und als Wert einfügen
10.06.2025 11:35:58
Siegfried Pütz
Hallo Gast, hallo Piet.
Danke für Eure Beiträge und Erklärungen.
Ich habe jetzt jeden Code ausprobiert, leider ohne entsprechendes Ergebnis. Habe so einiges ausprobiert. Folgende Formel ermittelt nun den Wert in Zelle AI 1- AI 9 (=WENN(ODER($L$5=444;$S$5=444;$Z$5=444);0,5;""), In AJ 9 - AJ 9 (=WENN(ODER($L$5=333; $S$5=333; $Z$5=333); 0,5; "") usw..
Wenn der Wert in Zelle E5 444 beträgt, wird der Wert in den Zellen AI 3 - AI 9 eingetragen. Beträgt der Wert in Zelle E5 333 erfolgt der Eintrag in den Zellen AJ 3 - AJ9. Dann verschwinden aber die Wert in den Zellen AI 3 - AI 9. Aber genau das möchte ich verhindern! Mit kopieren, dann rechte Maustaste - Werte Eintragen - funktioniert das.
Die Formeln sind für jedes Ergebnis in den Zellen "E"5; "L5"; "S5" sowie "Z5" entsprechend angepasst, z.B. wenn der Wert in Zelle L5 444 erreicht ist gilt diese Formel (=WENN(ODER($E$5=444;$S$5=444; $Z$5=444); 0,5; "").
Das liest sich alles kompliziert,
Besser kann ich es leider nicht beschreiben :-(.
Grüße Euch,
SiggiP
Anzeige
AW: Zellen Inhalt kopieren und als Wert einfügen
09.06.2025 14:43:48
ralf_b
Moin Siegfried,

Zitat: z.B. Eingabe in AH4 führt bei Ergebnis 0,5 zu Anzeige in Zelle AN4
Die Zeile 4 ist nur als Beispiel gemeint. Stellvertretend für alle anderen Zellen in dem Bereich.

um den Bereich zu übertragen
Versuchs mal damit. Das funktioniert aber nur wenn der Wert in der überwachten Zelle (Spalte AH) von Hand verändert wird. Ein Formelergebnis wird so nicht geprüft. Dazu müßte man den Code ins Calculate() Event schreiben.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim lrow As Long

If InStr(Target.Address, ":") Then Exit Sub

If Not Intersect(Target, Range("AH2:AH9")) Is Nothing Then 'prüft ob Target im Bereich liegt
lrow = Target.Row
'Range auf 4 Spalten verbreitern mit resize
Range("AN" & lrow).Resize(1, 4) = IIf(Cells(lrow, "AI") = 0.5, Range("AI" & lrow).Resize(1, 4).Value, Empty)
End If

End Sub



Anzeige
AW: Zellen Inhalt kopieren und als Wert einfügen
09.06.2025 01:44:42
Gast
nachtrag : - der Code gehört ins aktive Tabellenblatt, NICHT in ein Modul!!
AW: Zellen Inhalt kopieren und als Wert einfügen
09.06.2025 17:52:43
Gast
Nachtrag - Fehler im Code, bitte ggf. diesen berichtigten Code übernehmen.

Private Sub Worksheet_Change(ByVal Target As Range)

If InStr(Target.Address, ":") Then Exit Sub

'bitte deine Eingabe Adresse angeben
If Target.Address = "$A$1" Then
For Each AC In Range("AN2:AN9")
If AC.Value = 0.5 Then
AC.Offset(0, 5) = AC.Value
Else
AC.Offset(0, 5) = Empty
End If
Next AC
Target.Select '** oder löschen
End If
End Sub
Anzeige
AW: Zellen Inhalt kopieren und als Wert einfügen
10.06.2025 17:00:33
Gast
Hallo Siggi

Sorry, ich habe dein gesamtes Formelsystem nicht verstanden, es mal nachgebaut.
Formeln tun genau das, was Formeln tun. Steht in E5 444 hat Zelle AI den Wert 0,5.
Steht in E5 333 hat Zelle AJ den Wert 0,5. Gibt es E5 = 444 und L5 =333 haben beide 0,5!
Unklart ist mir noch warum alle Zellen von AI3-9 oder AJ3-9 den Wert 0,5 bekommen sollen??
Ich werde aus deiner Aufgabenstellung einfach nicht schlau.

Kannst du bitte mal die Codes für die Button hochladen. Vielleicht blicke ich dann mal durch.
Sind die Einngabezellen immer nur in der Zeile 5?? Oder ändert sich das auch mal?

mfg
Anzeige
AW: Zellen Inhalt kopieren und als Wert einfügen
11.06.2025 17:17:04
Gast
Hallo Siggi

die einzige Lösung die ich hier sehe habe ich dir unten gezeigt. Die musst du ggf. noch auf deine Makros anpassen.
Wichtig ist, das du eine/mehrere Zelle/n hast, wo Eingaben von Hand stattfinden. Damit kann man das Makro starten!

Intersect(Range("D2:D9") - > Hier musst du deinen genauen Eingabe Bereich von bis ... angeben!
If Range("AI3").Value = 0.5 Then -> Mit dieser Auswertung kannst du dann das richtige Makro starten.
Den Reordercode habe ich auf Profi Schreibweise verkürzt. Ich weiss nicht ob Range(K5).Select notwendig ist??

Ich hoffe es hilft dir weiter deine 16 Makros damit richtig zu starten? Würde mich freuen.

mfg Gast

Private Sub Worksheet_Change(ByVal Target As Range)

If InStr(Target.Address, ":") Then Exit Sub
'Prüfen ob in Zellen D eine Eingabe erfolgt ist.
If Not Intersect(Range("D2:D9"), Target) Is Nothing Then
If Range("AI3").Value = 0.5 Then 'AI3 Zelle
Range("AI2:AI9").Copy
Range("AM2:AM9").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Application.CutCopyMode = False
'** erforderlich?? wenn Nein einfach löschen!
Range("K5").Select
ElseIf Range("AI4").Value = 0.5 Then 'AI4 Zelle
'nächstes Makro
ElseIf Range("AI5").Value = 0.5 Then 'AI5 usw.
'nächstes Makro usw.
End If
End If
End Sub
Anzeige
AW: Zellen Inhalt kopieren und als Wert einfügen
14.06.2025 15:21:30
Piet
Nachtrag - Bitte gib mir sofort Rückantwort, das du meine letzte Nachricht gelesen hast, deine letzte AW finde ich dann im Archiv.
AW: Zellen Inhalt kopieren und als Wert einfügen
14.06.2025 21:33:01
GerdL
Moin Siegfried,

in B1 eine Formel, die bei Eingabe 444 in a1 0,5 ausgibt.

Den Code ins Modul der Tabelle stellen.
Private Sub Worksheet_Change(ByVal Target As Range)

If InStr(Target.Address, ":") Then Exit Sub
On Error GoTo fin
'Prüfen ob in Zelle a1 eine Eingabe erfolgt ist.
If Not Intersect(Range("a1"), Target) Is Nothing Then
Application.EnableEvents = False
If Range("b1").Value = 0.5 Then
If Range("c1") = "" Then
Range("c1") = 0.5
End If
End If
End If
fin:
Application.EnableEvents = True
End Sub

Gruß Gerd
Anzeige
AW: Zellen Inhalt kopieren und als Wert einfügen
14.06.2025 21:47:33
Siegfried Pütz
Hallo Gerd.
Super, für die eine Zelle funktioniert das. :-)
Damit kann ich ja jetzt testen. Welche Änderungen müsste ich denn ändern um das Ganze zu erweitern? Z.B.: wenn A2 = 333; B2 = 0,5 dann kopieren in c2?

Gruß,
SiggiP
AW: Zellen Inhalt kopieren und als Wert einfügen
14.06.2025 22:02:15
GerdL
Sowas, inklusive Schnapszahl in a2 u. Formel mit Rückgabe 0,5 in B2?
Private Sub Worksheet_Change(ByVal Target As Range)

If InStr(Target.Address, ":") Then Exit Sub
On Error GoTo fin
'Prüfen ob in Zelle a1 oder a2 eine Eingabe erfolgt ist.
If Not Intersect(Range("a1:a2"), Target) Is Nothing Then
Application.EnableEvents = False
If Range("b" & Target.Row).Value = 0.5 Then
If Range("c" & Target.Row) = "" Then
Range("c" & Target.Row) = 0.5
End If
End If
End If
fin:
Application.EnableEvents = True
End Sub

Gruß Gerd

Anzeige
AW: Zellen Inhalt kopieren und als Wert einfügen
14.06.2025 22:35:07
Siegfried Pütz
Super, klappt wunderbar.
Danke Dir.

Gruß,
SiggiP
AW: Zellen Inhalt kopieren und als Wert einfügen
15.06.2025 13:16:24
Siegfried Pütz
Hallo GerdL,
Ich habe deinen Code jetzt in die entsprechende Datei modifiziert und eingefügt.
Wenn ich in den Zellen D4 - D33 Werte eintrage und ich dann den Wert z.B. 444 in Zelle E4 erreiche, wird in Zelle AG3 = E4 auch 444 angezeigt.
In Zelle AH3 wird dann 0,5 durch die Wenn Formel =WENN($AH$2=444;0,5;"") angezeigt.
Das Problem dabei: Um 0,5 in Zelle AH3 den Wert angezeigt zu bekommen, muss ich die Zelle AG3 anklicken und mit Enter bestätigen.
Gibt es da eine Möglichkeit das zu umgehen?

Gruß,
SiggiP
Anzeige
AW: Zellen Inhalt kopieren und als Wert einfügen
15.06.2025 16:52:20
GerdL
Hallo Siggi,

vielleicht kommt man mit deiner Beispieldatei mit deinem angepassten Code hin.

Gruß Gerd
AW: Zellen Inhalt kopieren und als Wert einfügen
14.06.2025 16:15:44
Siegfried Pütz
Hallo Piet,
habe Deinen Code probiert, Zelle B1 mit deiner Formel geändert und in C1 aufgerundet. In deinem Code wird mir dann ein Fehler angezeigt
If Not Intersect(Range("A1"), Target)

Keine Ahnung.... :-(
Danke für deinen Hinweis wegen Archiv.
Gruß,
SiggiP


If Not Intersect(Range("a1"), Target) Is Nothing Then

MsgBox "Target a1 ok" & vbLf & Range("b1").Value
If Range("c1").Value = 0.5 Then
MsgBox "Zelle b1 ok"
Range("d1").Copy
Anzeige
AW: Zellen Inhalt kopieren und als Wert einfügen
11.06.2025 17:29:30
Gast
Hallo

die letzte Alternative ist, die 16 Button durch einen Button ersetzen, wo du die Ergebniszelle einzeln auswertest.
Da blicke ich bei der Menge an Formeln aber nicht durch wie die Auswertung genau aussehen muss.
Hier nur ein Beispiel, als gedankliche Unterstüzung, wie man das mit 1 Button bewerkstelligen kann.

mfg

Sub Button_BeiKlick()

'Zellen AI3:AI9 einzeln auswerten
If Range("AI3").Value = 0.5 Then
Range("AI2:AI9").Copy
Range("AM2:AM9").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
ElseIf Range("AI4").Value = 0.5 Then 'AI4 Zelle
'nächstes Makro (Fantasie Range!)
Range("AJ2:AJ9").Copy
Range("AN2:AN9").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
ElseIf Range("AI5").Value = 0.5 Then 'AI5 usw.
'nächstes Makro usw. (Fantasie Range!)
Range("AK2:AK9").Copy
Range("AO2:AO9").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
End If
Application.CutCopyMode = False
End Sub
Anzeige
AW: Zellen Inhalt kopieren und als Wert einfügen
11.06.2025 17:39:34
Siegfried Pütz
Hallo Gast,
das sieht ja viel versprechend aus. Werde ich testen und Dir eine Rückmeldung senden.
Vorerst vielen Dank. :-)
Gruß,
SiggiP
AW: Zellen Inhalt kopieren und als Wert einfügen
13.06.2025 22:57:14
Siegfried Pütz
Hallo Gast,
ich habe jetzt alle deine Codes probiert, ohne Erfolg. Habe Zellbezüge mehrmals geändert, auch ohne Erfolg.
Mal einfach ausprobiert in einer neuen, leeren Datei: Zelle A1 = 444, Zelle B1 wird über "wenn Formel" 0,5 angezeigt. In Zelle C1 soll nun der kopierte Wert von Zelle B1 als "Wert einfügen" gleich "rechte Maustaste Einfügeoptionen, Werte einfügen" eingefügt werden.
Habe folgenden Code dafür verwendet, einmal in "Diese Arbeitsmappe", dann neu getestet in Code des Tabellen Blattes. Nichts geschieht in Zelle C1,
Gruß,
SiggiP

Private Sub Worksheet_Change(ByVal Target As Range)

If InStr(Target.Address, ":") Then Exit Sub
'Prüfen ob in Zellen D eine Eingabe erfolgt ist.
If Not Intersect(Range("a1"), Target) Is Nothing Then
If Range("b1").Value = 0.5 Then 'AI3 Zelle
Range("b1").Copy
Range("c1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Application.CutCopyMode = False
End If
End If
End Sub
Anzeige
AW: Zellen Inhalt kopieren und als Wert einfügen
14.06.2025 15:17:58
Piet
Hallo Siggi

da bin ich jetzt selbst sprachlos und etwas ratlos: - Wieso klappt das nicht???
Mein Tipp zur Fehlersuche, teste bitte mal mit MsgBoxen was nicht funktioniert.
Es will mir einfach nicht in den Kopf warum das Change Makro nicht funktioniert?
Bei ThisWorkbook gilt der Code immer für JEDES Sheet. Bitte daran denken.

Dein Thread ist bald zu Ende, dann fällt er aus dem Server raus.
Ggf. musst du einen neuen Thread eröffnen. Schauen wir mal ...

mfg Piet

PS Schau bitte mal ob statt 0.5 eine Kommastelle herauskommt, z.B. 0.4996 -> Dann musst du [b1] ggf. Runden (Round,2)

If Not Intersect(Range("a1"), Target) Is Nothing Then

MsgBox "Target a1 ok" & vblf & Range("b1").Value
If Range("b1").Value = 0.5 Then 'AI3 Zelle
MsgBox "Zelle b1 ok"
Range("b1").Copy
Anzeige
AW: Zellen Inhalt kopieren und als Wert einfügen
10.06.2025 17:01:49
Gast
Nachtrag -> kannst du ggf. eine anonyme Beispieldatei mit einer Lösung von Hand hochladen??
AW: Zellen Inhalt kopieren und als Wert einfügen
10.06.2025 17:28:57
Siegfried Pütz
Hallo Gast.
Wie soll ich Dir das erklären?
Mal einfach versucht zu erklären: In Zelle E5 steht am Anfang = 501. Dieser Wert ändert sich nach Eintrag in den "D" Zellen. Wenn nun der Wert in Zelle E5 = 444 erreicht wird in den Zellen AI 4 - AI 9, bedingt durch meine Formel je ein Wert von 0,5€ angezeigt. Wenn sich nun der Wert in Zelle E5 ändert, ist kein Wert in den entsprechenden Zellen. Was ich nun möchte: wenn "einmal" der Wert 0,5€ in den Zellen AI 4 - AI 9 soll dieser Wert trotzdem bleiben soll. Mittlerweile habe ich 16 Makros erstellt und dann entsprechend zugewiesen.
Im Anhang ein Code:
Sub E_5_444()

'
' E_5_444 Makro
'

'
Range("AI2:AI9").Select
Selection.Copy
Range("AM2:AM9").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False

Range("K5").Select
End Sub


Das geht. Nur muss ich jedes mal den entsprechenden Button betätigen wenn eine der Werte zutrifft. Vielleicht hilft der Code das zu erklären?
Gruß,
SiggiP
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige