Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Einfügen erst ab Zeile 15

Forumthread: VBA Einfügen erst ab Zeile 15

VBA Einfügen erst ab Zeile 15
20.02.2018 16:03:31
Daniel
Hallo,
in meiner Verzweifelung wende ich mich mal wieder an euch. Ich habe einen Makro geschrieben, der aus Sheet0 die Zeilen kopiert in denen in Spalte 12 das Datum größer ist als heute.
Funktioniert alles wunderbar. Beim Einfügen im neuen Sheet1 sollen die ersten 15 Zeilen freigelassen werden. (die Zeilen sind nicht alle mit Daten befüllt!)
Wie kann ich die ersten 15 Zeilen freilassen?
Tausend Dank im Voraus
Daniel
LastRow = Worksheets("Sheet0").Cells(Worksheets("Sheet0").Rows.Count, "A").End(xlUp).Row
For Row = 2 To LastRow
If Worksheets("Sheet0").Cells(Row, 12).Value > Date Then
Worksheets("Sheet0").Cells(Row, 12).EntireRow.Copy
Worksheets("Sheet1").Activate
nextrow = Range("a" & LastRow).End(xlUp).Row + 1
Range(nextrow, 1).Select
ActiveSheet.Paste
End If
Next Row
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Einfügen erst ab Zeile 15
20.02.2018 16:21:33
Werner
Hallo Daniel,
als erstes solltest du dir von Anfang an angewöhnen, deine Variablen zu deklarieren. Am Besten außerhalb der Prozedur ein Option Explizit einfügen, dann meckert dich Excel an, sollte eine Variable nicht deklariert sein.
Option Explicit
Public Sub aaa()
Dim LastRow As Long, nextrow As Long, Row As Long
LastRow = Worksheets("Sheet0").Cells(Worksheets("Sheet0").Rows.Count, "A").End(xlUp).Row
nextrow = Range("A" & LastRow).End(xlUp).Row + 1
If Worksheets("Sheet1").Range("A5") = "" Then nextrow = 5
For Row = 2 To LastRow
If Worksheets("Sheet0").Cells(Row, 12).Value > Date Then
Worksheets("Sheet0").Rows(Row).Copy _
Worksheets("Sheet1").Rows(nextrow)
nextrow = nextrow + 1
End If
Next Row
End Sub
Gruß Werner
Anzeige
AW: VBA Einfügen erst ab Zeile 15
20.02.2018 16:31:47
Daniel
Tausend Dank!
Gerne u. Danke für die Rückmeldung. o.w.T.
20.02.2018 16:36:50
Werner
AW: VBA Einfügen erst ab Zeile 15
20.02.2018 16:33:33
KlausF
Hi Daniel, z.B. so:
Sub Kopieren()
Dim lastRow As Long, a As Long, i As Long
lastRow = Worksheets("Sheet0").Cells(Rows.Count, "A").End(xlUp).Row
a = 16
With Worksheets("Sheet0")
For i = 2 To lastRow
If .Cells(i, 12).Value > Date Then
.Rows(i).Copy Worksheets("Sheet1").Range("A" & a)
a = a + 1
End If
Next i
End With
End Sub
Gruß
Klaus
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA für das Einfügen ab Zeile 15 in Excel


Schritt-für-Schritt-Anleitung

Um in Excel mit VBA Zeilen ab Zeile 15 einzufügen, kannst du den folgenden Code verwenden. Dieser Code kopiert nur die Zeilen aus "Sheet0", in denen das Datum in Spalte 12 größer ist als das heutige Datum, und lässt dabei die ersten 15 Zeilen in "Sheet1" frei.

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (ALT + F11).

  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).

  3. Kopiere den folgenden Code in das Modul:

    Option Explicit
    Public Sub EinfuegenAbZeile15()
       Dim LastRow As Long, nextrow As Long, Row As Long
       LastRow = Worksheets("Sheet0").Cells(Worksheets("Sheet0").Rows.Count, "A").End(xlUp).Row
       nextrow = 16 ' Beginn ab Zeile 16
    
       For Row = 2 To LastRow
           If Worksheets("Sheet0").Cells(Row, 12).Value > Date Then
               Worksheets("Sheet0").Rows(Row).Copy _
               Worksheets("Sheet1").Rows(nextrow)
               nextrow = nextrow + 1
           End If
       Next Row
    End Sub
  4. Speichere dein Projekt und schließe den VBA-Editor.

  5. Führe das Makro "EinfuegenAbZeile15" aus, um die Daten ab Zeile 15 in "Sheet1" einzufügen.


Häufige Fehler und Lösungen

  • Fehler: "Typenübereinstimmung"

    • Lösung: Stelle sicher, dass du die Variablen korrekt deklariert hast. Verwende Option Explicit zu Beginn deines Codes.
  • Fehler: Zeilen werden nicht kopiert

    • Lösung: Überprüfe, ob die Bedingung If Worksheets("Sheet0").Cells(Row, 12).Value > Date richtig formuliert ist und die Daten in Spalte 12 tatsächlich Datumswerte sind.

Alternative Methoden

Wenn du eine alternative Methode zur Verwendung von VBA bevorzugst, kannst du auch die Filterfunktion in Excel verwenden. Setze einen Autofilter auf die Spalte 12 in "Sheet0", um die relevanten Zeilen anzuzeigen, und kopiere dann manuell die Daten ab Zeile 15 in "Sheet1".


Praktische Beispiele

Hier ist ein weiteres Beispiel, das die Verwendung der .Range-Methode demonstriert, um die Zeilen zu kopieren:

Sub KopierenAbZeile15()
    Dim lastRow As Long, a As Long, i As Long
    lastRow = Worksheets("Sheet0").Cells(Rows.Count, "A").End(xlUp).Row
    a = 16 ' Beginne bei Zeile 16

    With Worksheets("Sheet0")
        For i = 2 To lastRow
            If .Cells(i, 12).Value > Date Then
                .Rows(i).Copy Worksheets("Sheet1").Range("A" & a)
                a = a + 1
            End If
        Next i
    End With
End Sub

Tipps für Profis

  • Nutze die .Copy Destination Methode, um den Code effizienter zu gestalten.
  • Füge Fehlerbehandlungsroutinen hinzu, um das Skript robuster zu machen.
  • Halte deine Excel-Dateien regelmäßig auf dem neuesten Stand, um Komplikationen mit veralteten VBA-Codes zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die ersten 15 Zeilen in "Sheet1" immer frei bleiben? Du kannst den nextrow-Wert im Code auf 16 setzen, was sicherstellt, dass die ersten 15 Zeilen immer leer sind.

2. Ist dieser Code in allen Excel-Versionen verwendbar? Ja, der bereitgestellte VBA-Code sollte in den meisten modernen Excel-Versionen funktionieren, solange du den VBA-Editor öffnen und Makros ausführen kannst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige