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

Mein 1. erstellter Code funktioniert nicht wie er soll

Forumthread: Mein 1. erstellter Code funktioniert nicht wie er soll

Mein 1. erstellter Code funktioniert nicht wie er soll
09.09.2025 20:20:57
Ralf Neumann
Schönen Guten Abend alle zusammen Ihr Leutchen,

Ich habe mich heute das ersten mal an einen Code ausprobiert und musste feststellen dass da ein Fehler drin ist, wo ich hoffe das jemand mir den Fehler beseitigt.

Zur Erläuterung mit dem autom. Datumswechsel ( J5 ) sollten die Daten von Q5 nach J5 sowie die Daten von ( Q9:Q28) nach (J9:J28) kopiert werden und danach Q5 und Q9:Q28 geleert werden.


https://www.herber.de/bbs/user/178859.xlsm

mit der lieben Bitte um Hilfestellung
Euer Ralf
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mein 1. erstellter Code funktioniert nicht wie er soll
09.09.2025 21:06:38
Eifeljoi 5
Hallo
Ich mache sowas mit Power Query.
Mein Tipp:
Gibt deiner Asbach uralten Excel Version die Rente und nutze PQ.
AW: Mein 1. erstellter Code funktioniert nicht wie er soll
10.09.2025 10:51:28
UweD
Hallo

1)
der Code wäre so richtig strukturiert
Evtl wurden die Umbrüche ja nur falsch dargestellt
2)
Schreibfehler Contents

Private Sub Worksheet_Change(ByVal Target As Range)


If Not Intersect(Target, Me.Range("J7")) Is Nothing Then

Application.EnableEvents = False
Me.Range("J9:J28").Copy Destination:=Me.Range("G9:G28")
Me.Range("Q9:Q28").ClearContents

Me.Range("J5").Copy Destination:=Me.Range("J5")
Me.Range("Q5").ClearContents
Application.EnableEvents = True

End If

End Sub


Aber das Problem ist, dass das Change Event nur auf Zelländerungen durch Eingaben reagiert.
Bei dir ist eine Formel enthalten. Die wiederum greift auf eine andere Formel usw.

im "Intersect(Target, Me.Range("J7")) " solltest du die Zelle(n) angeben, wo du wirklich Eingaben tätigst


LG UweD
Anzeige
AW: Mein 1. erstellter Code funktioniert nicht wie er soll
10.09.2025 13:35:49
Ralf Neumann
Hallo UweD,
Danke erstmal für deine Hilfe.
Leider klappt es nur teilweise.

Zur Info J5 bekommt das aktuelle Datum autom. von der Zelle A1 ( Formel )
Im weiteren muss es wie folgt heißen
Destination:=Me.Range("G9:G28") richtig Dest........("Q9:Q28)
Das leeren der Zellen Q5 und Q9:Q28 funktioniert, leider werden jedoch die Inhalte der Zellen Q5 sowie Q9:Q28 nicht wie gewünscht nach J5 resp. J9:J28 übertragen


Gruß
Ralf
Anzeige
AW: Mein 1. erstellter Code funktioniert nicht wie er soll
10.09.2025 14:14:44
Ralf Neumann
Hallo Uwe,

Ich habe den Code koregiert und jetzt klappt es

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Me.Range("J7")) Is Nothing Then

Application.EnableEvents = False
Me.Range("Q9:Q28").Copy Destination:=Me.Range("J9:J28")
Me.Range("Q9:Q28").ClearContents

Me.Range("Q5").Copy Destination:=Me.Range("J5")
Me.Range("Q5").ClearContents
Application.EnableEvents = True

End If

End Sub

WAREN NUR DREHER DRIN

HERZLICHEN DANK

Gruß
Ralf
Anzeige
AW: Mein 1. erstellter Code funktioniert nicht wie er soll
10.09.2025 11:01:41
MCO
Moin, Ralf!

Grundprinzip:
if Bedingung then 

anweisung
else
anweisung2
endif


Kurzschreibweise:
if Bedingung then anweisung


Du hast die Kurzschreibweise mit dem Grundprinzip vermengt, oder einen Zeilenumbruch(vor Application.enableevents = false) vergessen....
Und vor Application.enableevents = TRUE übrigens auch....

Beim Copy war auch ein Zeilenumbruch zuviel, 2x

Statt
        Me.Range ("J5")

Copy Destination:=Me.Range("J5")


Muss es heißen
Range("J5").Copy Destination:=Range("J5")

oder kurz:
Range("J5").Copy Range("J5")


Die Bereiche, die du löschen willst, kann man zusammenfassen.

Alles in allem ist dein Code wie folgt lauffähig:
Private Sub Worksheet_Change(ByVal Target As Range)


If Not Intersect(Target, Range("J7")) Is Nothing Then
Application.EnableEvents = False
Range("J9:J28").Copy Range("G9")
'Range("J5").Copy Range("J5") 'überflüssig!
Range("Q5,Q9:Q28").ClearContents

Application.EnableEvents = True
End If
End Sub


Die Bezüge hab ich nicht geändert und stelle aber mal folgende Fragen:

  • Wennn in J7 doch eine Formel steht, dann wird die doch nie geändert, also schlägt auch das Ereignis CHANGE nicht zu, oder?
    Du musst dann jedesmal in J7, Zelle editieren, ENTER....

  • Deine Tabelle geht offensichtlich bis Zeile 29, deine Bezüge nur bis Zeile 28. Absicht?


  • Wenn du nur die Inhalte kopieren möchtest, nicht aber die Formate, dann geht das auch.
            Range("J9:J28").Copy
    
    Range("G9").PasteSpecial xlPasteValues


    Viel Erfolg bei den ersten Schritten!

    Gruß, MCO
    Anzeige
    AW: Mein 1. erstellter Code funktioniert nicht wie er soll
    10.09.2025 13:49:23
    Ralf Neumann
    Hallo MCO
    Danke für die Info.
    folgende Sachen sind anzumerken;
    Zwar werden die Daten aus den Zellen Q5 sowie Q9:Q28 geleert,
    Die Inhalte aus Q9:Q28 sowie Q5 werden jedoch vorher nicht nach J9:J28 sowie J5 übertragen.

    Info
    Range("J9:J28").Copy Range("G9") Was hat "G9" zu tun??????? da gibt es keinerlei Bezug

    Gruß
    Ralf
    Anzeige
    AW: Mein 1. erstellter Code funktioniert nicht wie er soll
    10.09.2025 15:37:11
    MCO
    Hallo Ralf!


    Die Inhalte aus Q9:Q28 sowie Q5 werden jedoch vorher nicht nach J9:J28 sowie J5 übertragen.
    Das stand auch vorher nicht in deinem Code. Ich hab keine Funktion entfernt

    Wenn du das drin haben möchstest:
    Range("Q9:Q28").Copy Range("J9")
    
    Range("Q5").Copy Range("J5")


    Range("J9:J28").Copy Range("G9") Was hat "G9" zu tun??????? da gibt es keinerlei Bezug
    Doch!
    Der Bereich wird kopiert, Range("G9") ist die Zielzelle (Destination:=). Dies auszuschreiben ist aber unnötig.

    Gruß, MCO
    Anzeige
    Anzeige
    Anzeige
    Live-Forum - Die aktuellen Beiträge
    Datum
    Titel
    14.05.2026 13:31:09
    14.05.2026 09:50:42
    13.05.2026 19:14:18