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

Forumthread: VBA - Letzte Zeile copy & paste

VBA - Letzte Zeile copy & paste
14.10.2016 09:49:34
Nik
Guten Morgen zusammen,
habe ein Makro, welches das Ende einer bestimmten Zeile bestimmt und dann einen Wert kopiert und einfügt.
Kann mir bitte jemand erklären was der Teil "letztezeile" genau macht?
Ich verstehe leider nicht wo das Makro genau ansetzt, also welche Zeile Spalte, etc. Und wie das im Zusammenhang mit dem .offset funktioniert.
Wenn mir jemand behilflich sein könnte, wäre das sehr nett.
Danke im Voraus!
Gruß
Nik
https://www.herber.de/bbs/user/108779.xlsm
  • Public Sub COPY_MAKRO()
    Dim i As Integer
    For i = 11 To 100
    letztezeile = ActiveSheet.Cells(Rows.Count, i).End(xlUp).Offset(0, 1).Select
    Selection.Copy
    With ActiveCell
    Range(.Offset(0, 1), .Offset(0, 38)).Select
    End With
    ActiveSheet.Paste
    Next i
    End Sub
    


  • Anzeige

    4
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: VBA - Letzte Zeile copy & paste
    14.10.2016 10:01:36
    baschti007
    Hallo Nik
    Das Offset hat nix mit der letzten Spalte zu tun
    zB.
    
    I=1
    ActiveSheet.Cells(Rows.Count, i).End(xlUp)
    ist das gleiche wie
    ActiveSheet.Range("A1048576")End(xlUp)
    das bedeutet das du von der letzten Reihe(1048576) in Spalte A nach oben gehst bis ein Wert  _
    gefunden wird.
    Das Offset sagt nur das er dann von der Zelle eine Spalte nach rechts gehen soll.
    
    Gruß Basti
    Anzeige
    AW: VBA - Letzte Zeile copy & paste
    14.10.2016 10:45:09
    Nik
    Hallo Basti,
    ok, das verstehe ich dann so:
    i = 11 to 100
    ActiveSheet.Cells(Rows.Count, i).End(xlUp)
    = ActiveSheet.Cells(Zeile 1048576, Spalte K).End(xlUp)
    
    Also ist der Begriff Rows.count nur in Verbindung mit .End(xlUp) zu verstehen, sodass Excel von ganz unten anfangen soll und die erste Zelle sucht, welche nicht leer ist bzw. einen Value hat?
    Gruß Nik
    Anzeige
    AW: VBA - Letzte Zeile copy & paste
    14.10.2016 10:54:40
    baschti007
    Genau bei der ersten Schleife I=11 ist es K
    Gruß Basti
    ps.
    Mach doch mal mit dem Makrorecorder
    Klicke letzte zeile in spalte a an
    dann drückst du Shift + Pfeil nach oben
    Recorder stoppen.
    Und dann gucken was er aufgezeichnet hat
    AW: VBA - Letzte Zeile copy & paste
    14.10.2016 11:09:22
    Nik
    Ok, verstanden :)
    Danke und Gruß!
    Nik
    Sub Makro1()
    Range("A1048576").Select
    Selection.End(xlUp).Select
    End Sub
    

    Anzeige
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Infobox / Tutorial

    VBA: Letzte Zeile Ermitteln und Kopieren in Excel


    Schritt-für-Schritt-Anleitung

    Um die letzte Zeile in Excel mit VBA zu ermitteln und einen Wert zu kopieren, kannst du das folgende Makro verwenden:

    Public Sub COPY_MAKRO()
        Dim i As Integer
        Dim letztezeile As Long
        For i = 11 To 100
            letztezeile = ActiveSheet.Cells(Rows.Count, i).End(xlUp).Row
            ActiveSheet.Cells(letztezeile, i).Copy
            ActiveSheet.Cells(letztezeile + 1, i + 1).PasteSpecial
        Next i
    End Sub

    In diesem Beispiel wird die letzte Zeile für jede Spalte von 11 bis 100 ermittelt und der Wert wird in die nächste Zeile in der benachbarten Spalte eingefügt. Hierbei wird die End(xlUp) Methode verwendet, um von der letzten Zeile (A1048576) nach oben zu gehen, bis ein Wert gefunden wird.


    Häufige Fehler und Lösungen

    Fehler: "Laufzeitfehler 1004: Methode 'PasteSpecial' von Objekt 'Range' fehlgeschlagen."
    Lösung: Überprüfe, ob der Zielbereich korrekt angegeben ist. Stelle sicher, dass du PasteSpecial richtig verwendest.

    Fehler: "Typenkonflikt."
    Lösung: Achte darauf, dass die Variablen korrekt deklariert sind. In diesem Beispiel sollte letztezeile als Long deklariert werden, nicht als Integer.


    Alternative Methoden

    Eine alternative Methode zur Ermittlung der letzten Zeile ist die Verwendung einer Funktion. Hier ist ein Beispiel:

    Function LetzteZeileErmitteln(spalte As Integer) As Long
        LetzteZeileErmitteln = ActiveSheet.Cells(Rows.Count, spalte).End(xlUp).Row
    End Function

    Du kannst diese Funktion in deinem Makro verwenden, um die letzte Zeile für eine bestimmte Spalte zu ermitteln. Zum Beispiel:

    letztezeile = LetzteZeileErmitteln(11)

    Praktische Beispiele

    Angenommen, du möchtest die letzte Zeile in Spalte A ermitteln und den Wert kopieren:

    Sub BeispielLetzteZeile()
        Dim letztezeile As Long
        letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
        MsgBox "Die letzte Zeile in Spalte A ist: " & letztezeile
    End Sub

    Dieses Makro zeigt eine Meldung mit der letzten Zeilennummer in Spalte A an.


    Tipps für Profis

    • Nutze das VBA-Objektmodell effektiv, indem du die With-Anweisung verwendest, um den Code leserlicher und schneller zu machen.

      With ActiveSheet
        .Cells(letztezeile, i).Copy
        .Cells(letztezeile + 1, i + 1).PasteSpecial
      End With
    • Teste dein Makro zuerst in einer Testumgebung, bevor du es in wichtigen Arbeitsblättern anwendest.


    FAQ: Häufige Fragen

    1. Wie kann ich die letzte Zeile in einer bestimmten Spalte ermitteln?
    Verwende die Methode End(xlUp), um von der letzten Zeile der Spalte nach oben zu gehen, bis ein Wert gefunden wird.

    2. Was ist der Unterschied zwischen Rows.Count und der direkten Angabe von A1048576?
    Rows.Count ist dynamisch und passt sich an die Excel-Version an, während A1048576 nur für ältere Excel-Versionen gilt. Deshalb ist es besser, Rows.Count zu verwenden.

    3. Wie kann ich den Wert einer Zelle kopieren und in eine andere Zelle einfügen?
    Du kannst .Copy und .PasteSpecial verwenden, um einen Wert von einer Zelle in eine andere zu übertragen.

    4. Welche Excel-Version wird für diese Makros benötigt?
    Die oben genannten Makros funktionieren in Excel 2007 und neueren Versionen, da sie die Anzahl der Zeilen von 1 bis 1048576 unterstützen.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige