Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1552to1556
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

letzte Zeile finden und kopieren + weitere Zeilen

letzte Zeile finden und kopieren + weitere Zeilen
28.04.2017 11:20:02
Uwe
Hallo zusammen,
ich habe eine Tabelle (siehe hier: https://www.herber.de/bbs/user/113168.xlsm),
in der ich gerne die letzte beschriebene Zeile in Spalte A finden möchte. Diese Zeile und die darüberliegenden 8 Zeilen sollen kopiert und unter der letzten beschriebenen Zeile (ebenfalls der Spalte A) eingefügt werden.
Ich bekomme es mit folgendem Makro hin, die letzte Zeile zu finden und kopieren, weiß aber nicht, wie ich es mit den darüberliegenden 8 Zeilen machen soll. Über Hilfe würde ich mich sehr freuen.
Am besten sollen bestimmte Zellen des kopierten Zellbereiches noch "geleert" werden (in den Beispieldatei wäre es dann die Zellen B23 und C23).
Vielen Dank vorab und beste Grüße
Uwe

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: letzte Zeile finden und kopieren + weitere Zeilen
28.04.2017 13:13:30
Werner
Hallo Uwe,
Option Explicit
Sub Zeilen_kopieren()
Dim loLetzte As Long
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
.Rows(loLetzte - 8 & ":" & loLetzte).Copy .Rows(loLetzte + 1)
.Range(Cells(loLetzte, 2), .Cells(loLetzte, 3)).ClearContents
End With
End Sub
Gruß Werner
AW: letzte Zeile finden und kopieren + weitere Zeilen
28.04.2017 13:47:02
Uwe
Hallo Werner,
besten Dank für deine schnelle Antwort! Klappt soweit super! Ich habe leider nicht ganz präzise geschildert, wie das "Leeren" der Zellen funktionieren soll. Ich meinte nicht, dass aus dem "alten" Bereich etwas gelöscht wird, sondern aus dem Zellbereich, den ich mit dem Makro eingefügt habe. Hierbei handelt es sich dann z.B. um B28 und C29 (meine Beispiele B23 und C 23 waren im ersten Threat schlecht gewählt, sorry). Ich habe versucht, einfach dein "loletzte" zu ersetzen durch eine 1, was leider nicht zum Erfolg führte:
Sub Zeilen_kopieren()
Dim loLetzte As Long
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
.Rows(loLetzte - 8 & ":" & loLetzte).Copy .Rows(loLetzte + 1)
.Range(Cells(1, 2), .Cells(1, 3)).ClearContents
End With
End Sub

Zudem habe ich das Worksheet ersetzt mit "ActiveSheet", da ich das Makro in mehreren Blättern nutzen möchte. Das sollte passen oder? Zumindest meinen VErsuchen nach hats geklappt :).
Danke und viele Grüße
Uwe
Anzeige
Rückfrage
28.04.2017 15:48:09
Werner
Hallo Uwe,
B28 und C29
ist das so richtig?
oder meinst du
B28 und C28
und warum ausgerechnet B28?
Immer die fünfte Zeile in Spalte B des neu eingefügten Bereiches, oder an was machst du das fest, was gelöscht/geleert werden soll? Du schreibst nämlich "zum Beispiel"?
Gruß Werner
AW: Rückfrage
29.04.2017 19:19:57
Uwe
Hi Werner,
besten Dank für deine abermalige Rückmeldung. Mache dich nicht an den angegebenen Zellen B28, C29 fest.
Im Endeffekt soll es so sein, wie du in deinem letzten Satz angedeutet hast: im Bereich, der durch dein Makro eingefügt wurde, sollen nach dem einfügen immer bestimmte Zellen geleert werden. Um bei den Beispielzellen zu bleiben so wie du schreibst immer die fünfte Zeile/zweite Spalte. Meine originaldatei ist größer und insb. mehrspaltiger als das Beispiel.
Was ich eigentlich möchte, ist, dass in demjenigen Zellbereich, der durch Deinen Code unterhalb eingefügt wurde, bestimmte Zellen geleert werden. Als Laie würde ich sagen, man muss den eben eingefügten Bereich selektieren und dann sagen: "leere in diesem Bereich die Zellen (2,2), (4,5), (7,9)". Diese Zeilen/Spaltenangaben sind momentan nur Dummies, da ich noch nicht genau weiß, welche Zellen es genau sein werden (die eingangs angefügte Datei ist nur ein vereinfachtes Beispiel meiner eigentlichen Datei, in Summe werden es wahrscheinlich 6 verschiedene Zellen sein, die geleert werden müssen).
Habe es hier nochmal versucht zu veranschaulichen, was ich genau möchte. Hoffe es wird dadurch verständlicher. https://www.herber.de/bbs/user/113199.xlsx
Danke und viele GRüße
Uwe
Anzeige
AW: Rückfrage
29.04.2017 20:00:37
Werner
Hallo Uwe,
da braucht man nichts zu selektieren. Das kannst du doch alles über die Variable loLetzte händeln.
Du weißt ja, dass loLetzte die letzte beschriebene Zelle/Zeile ist.
Eingefügt wird eine Zeile darunter. Also ist die erste Zeile des eingefügten Bereichs loLetzte + 1.
Darüber lässt sich doch alles steuern.
Wenn du in der zweiten Zeile des eingefügten Bereichs die Zelle in Spalte B leeren willst dann:
.Cells(loLetzte + 2, 2).ClearContents
Die dritte Zeile des eingefügten Bereichs Spalte C wäre dann:
.Cells(loLetzte + 3, 3).ClearContents
Und so weiter und so fort.
Gruß Werner
Anzeige
AW: Rückfrage
02.05.2017 08:48:42
Uwe
Hallo Werner,
vielen Dank! Das klingt logisch und funktioniert einwandfrei.
Besten Dank für deine Unterstützung und viele Grüße!
Uwe
Gerne u. Danke für die Rückmeldung. o.w.T.
02.05.2017 08:57:05
Werner
AW: letzte Zeile finden und kopieren + weitere Zeilen
28.04.2017 15:58:23
Wolfgang
Hallo Werner,
wenn ich es richtig verstanden habe,
dann sollen doch die letzten 8 Zeilen ab der letztbeschriebenen Zelle in Spalte A nach unten kopiert werden?
Dann paßt doch der Code von Uwe:
ption Explicit

Sub Zeilen_kopieren()
Dim loLetzte As Long
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
.Rows(loLetzte - 8 & ":" & loLetzte).Copy .Rows(loLetzte + 1)
.Range(Cells(loLetzte, 2), .Cells(loLetzte, 3)).ClearContents
End With
End Sub
Du musst die Zeile
.Range(Cells(loLetzte, 2), .Cells(loLetzte, 3)).ClearContents
auskommentieren,
'.Range(Cells(loLetzte, 2), .Cells(loLetzte, 3)).ClearContents
dann klappt das.
Gruss Wolfgang
Anzeige
falscher Ansprechpartner
28.04.2017 16:53:16
Werner
Hallo Wolfgang,
Uwe hatte die Frage gestellt, der Code ist von mir.
Gruß Werner
AW: letzte Zeile finden und kopieren + weitere Zeilen
29.04.2017 19:13:21
Uwe
Hi Wolfgang,
danke für deine Antwort. Wie schon von Werner geschrieben, ist er der "Zurhilfeeilende" und ich der "Verzweifelte".
Was meinst du genau mit auskommentieren? Ich hatte versucht, "loletzte" durch die Zeilennummer zu ersetzen, in der ich eine Zelle leeren möchte, also
.Range(Cells(2, 2), .Cells(2, 3)).ClearContents
... allerdings ohne Erfolg. Was ich eigentlich möchte, ist, dass in demjenigen Zellbereich, der durch Werners Code unterhalb eingefügt wurde, bestimmte Zellen geleert werden. Als Laie würde ich sagen, man muss den eben eingefügten Bereich selektieren und dann sagen: "leere in diesem Bereich die Zellen (2,2), (4,5), (7,9)". Diese Zeilen/Spaltenangaben sind momentan nur Dummies, da ich noch nicht genau weiß, welche Zellen es genau sein werden (die eingangs angefügte Datei ist nur ein vereinfachtes Beispiel meiner eigentlichen Datei).
Habe es hier nochmal versucht zu veranschaulichen, was ich genau möchte. Hoffe es wird dadurch verständlicher. https://www.herber.de/bbs/user/113199.xlsx
Danke und viele GRüße
Uwe
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige