Hallo Caro,
Dein Code geht auch, ist aber sehr umständlich. Auf diese Weise hast du aber wenigstens ein paar Grundfunktionen von VBA kennengelernt.
Wo vielleicht ein Problem auftreten könnte ist bei lngZeile und lngSpalte, da du hier auf ActiveCell verweist. Nach Eingabe und vor Ausführen des Codes wird die ActiveCell verschoben. Meist ist das die darunterliegende Zelle. In den Optionen kann bei einigen Nutzern aber stattdessen die rechte, linke oder darüberliegende Zelle ausgewählt sein. Da du diese Variablen aber nur am Ende für Select verwendest, sollte auch das nicht schlimm sein.
Wenn du wie hier vor dem Einfügen einer Zeile in den Copy-Modus gehst, wird der gesamte Inhalt der kopierten Zeile in die neue übertragen, welchen du nun mit ClearContents wieder löschst, dadurch löst du ein neues Worksheet-Change Ereignis aus, dessen Ausführung du korrekt mit EnableEvents = false bzw. True am Anfang und Ende des codes unterbindest.
Es kann übrigens sein, dass du EnableEvents auch bei meiner Variante vor bzw. nach Rows.Insert nutzen musst. Ich habe den Code vorher nicht testen können.
Wie du für rngEnde auf die letzte Zeile kommst habe ich nicht ganz verstanden, da du hier über die Excel-Internen Namen gehst, aber solange es bei dir funktioniert...
Sorry für das viele Geschwafel
L. G. Mr. K.