Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

letzte beschriebene Zeile kopieren VBA





Frage

Hallo Excelfreunde, ich würde gerne per knopfdruck (commandbutton) die letzte beschriebene Zeile meines Tabellenblatts kopieren und in Tabellenblatt2 einfügen. Allerdings sollte hier nicht die ganze Zeile eingefügt werden sondern nur bestimmte Felder belegt werden. ZB. Kopieren A5,B5;C5;D5,E5 und Einfügen in Tabellenblatt2 A1 , A2, A5, A20, B20, Beim nächsten Drücken des Commandbutton werden die Werte in Tabellenblatt 2 einfach überschrieben. Geht das. Über Hilfe wäre ich sehr dankbar. Grüße Boris

Antwort 1 von coros

Hallo Boris

nachfolgendes Makro sollte das machen, was Du Dir vorgestellt hast.

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche

Option Explicit

Sub Kopieren()
Dim iLastRow As Integer
Application.ScreenUpdating = False
iLastRow = Sheets("Tabelle1").UsedRange.Columns.Count
Sheets("Tabelle1").Range("A" & iLastRow).Copy
Sheets("Tabelle2").Range("A1").PasteSpecial Paste:=xlPasteValues
Sheets("Tabelle1").Range("B" & iLastRow).Copy
Sheets("Tabelle2").Range("A2").PasteSpecial Paste:=xlPasteValues
Sheets("Tabelle1").Range("C" & iLastRow).Copy
Sheets("Tabelle2").Range("A5").PasteSpecial Paste:=xlPasteValues
Sheets("Tabelle1").Range("D" & iLastRow).Copy
Sheets("Tabelle2").Range("A20").PasteSpecial Paste:=xlPasteValues
Sheets("Tabelle1").Range("D" & iLastRow).Copy
Sheets("Tabelle2").Range("B20").PasteSpecial Paste:=xlPasteValues
End Sub


Ich hoffe, Du kommst klar.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

Bei Fragen melde Dich.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von bokap1975

Hi Oliver,

erstmal danke.

Aber leider funktioniert es nicht so richtig.

Die Zeile fünf sollte "variabel sein"
Ich brauche aus dieser Tabelle immer die Werte der letzten beschriebenen Zeile. Die Zeile fünf war nur ein Beispiel. Diese Zeilen werden von mir per Hand befüllt. In Tabelle2 sind die Felder fix.

Bei deinem Makro wird immer nur die Zeile fünf in die entsprechenden Felder in Tabelle2 Kopiert. Egal ob zeile 6 die letzte zeile ist oder die zeile 2 die letzte beschriebene zeile ist.

Viele Grüße
Boris

Antwort 3 von coros

Hallo Boris,

ja, ist ein kleiner Fehler von mir gewesen. Aber bevor ich das richtige Makro hier poste, soll die letzte Zeile in dem gesamten Tabellenblatt gefunden werden oder gibt es eine Spalte, die als Kriterium gilt und bei der die letzte Zeile gefunden werden soll?

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von rainberg

Hallo Boris,

probier's mal so

Option Explicit

Sub transfer()
Dim arr(1 To 1, 1 To 5), intS As Integer, intZ As Integer
intZ = Sheets("Tabelle1").Cells.Find("*", searchdirection:=xlPrevious).Row
For intS = 1 To 5
arr(1, intS) = Cells(intZ, intS).Value
Next
Worksheets("Tabelle2").Range("A1,A2,A5,A20,B20").Value = arr()
End Sub


Gruß
Rainer

Antwort 5 von bokap1975

Hi Oliver,

Es gibt keine Feste letzte Zeile. Es handelt Sich um eine Tabelle die von mir täglich mit Werten ausgefüllt wird. Somit verschiebt sich die letzte Zeile jeden Tag um etwa 10-50 Zeilen nach unten. Es handelt sich um Monats-Tabellen. Somit nie mehr als 1500 Zeilen.

Viele Grüße
Boris

Antwort 6 von bokap1975

Perfekt Rainer.

So funktioniert es wie ich mir das dachte. Danke.

Viele Grüße
Boris

Antwort 7 von bokap1975

Korrektur.

Hi, leider ist Rainers vorschlag doch nicht so perfekt.

der Code kopiert mir nur die jeweilige letzte befüllte Zelle der Spalte A

Die anderen Spalten werden außer acht gelassen.

Viele Grüße
Boris

Antwort 8 von coros

Hallo Boris,

ich wollte nicht wissen, welches die letzte Zeile ist, sondern ob es eine Spalte gibt, in der man die letzte Zeile suchen lassen kann, oder ob es um die wirklich letzte Zeile in einem Tabellenblatt oder einem Bereich geht. Also Spalte nicht Zeile.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 9 von rainberg

Hallo Boris,

sorry, man sollte eben doch immer testen.
Hier der neue Code.

Option Explicit

Sub transfer()
Dim intZ As Integer
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Worksheets("Tabelle1")
Set ws2 = Worksheets("Tabelle2")
intZ = ws1.Cells.Find("*", searchdirection:=xlPrevious).Row
With ws2
.Cells(1, 1).Value = ws1.Cells(intZ, 1).Value
.Cells(2, 1).Value = ws1.Cells(intZ, 2).Value
.Cells(5, 1).Value = ws1.Cells(intZ, 3).Value
.Cells(20, 1).Value = ws1.Cells(intZ, 4).Value
.Cells(20, 2).Value = ws1.Cells(intZ, 5).Value
End With
End Sub


Gruß
Rainer

Antwort 10 von bokap1975

Hi Oliver,

wenn ich dich richtig verstanden habe, brauchst du eine leere Spalte um die letzte zeile zu finden. Da wäre die Spalte K frei. Steh vielleicht etwas auf dem Schlauch.

Allerdings habe ich gerade

Rainers neuen Code ausprobiert und das funktioniert jetzt prima.

Vielen Dank für eure Mühe.

Grüße
Boris

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: