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

Forumthread: kopierte Zeile in nächste freie Zeile einfügen

kopierte Zeile in nächste freie Zeile einfügen
26.02.2014 13:55:35
Joerg
Hallo
Ich bitte hier um eure Hilfe
In Tabelle2 habe ich durch Formeln und einem kleinen Makro, Blutzuckerwerte als Ausgabe immer in K2:Q2. Auf einem weiteren Tabellenblatt "Tabelle3" habe ich eine Liste auf die ich diese zuvor kopierten Werte von Tabelle2 K2:Q2 anfügen möchte. Also immer in die nächste freie Zeile einfügen und speichern. Ich hoffe Ihr könnt mir den fertigen code schreiben.
Vielen Dank. Gruss Joerg

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: kopierte Zeile in nächste freie Zeile einfügen
26.02.2014 22:28:44
Oberschlumpf
Hi Joerg
du hast nicht geschrieben, in welche Spalten in Tabelle3 die Werte eingetragen werden sollen.
Deswegen vermute ich jetzt einfach mal, die erste Spalte in Tabelle3 ist Spalte A.
Versuch mal:

Sheets("Tabelle2").Range("K2:Q2").Copy
With Sheets("Tabelle3")
.Range("A" & Cells(.Rows.Count, 1).End(xlUp).Row).PasteSpecial Paste:=xlPasteAll, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With
Application.CutCopyMode = False
Hilfts?
Wenn Spalte A nicht die erste Spalte ist, musst du den Code anpassen.
Ciao
Thorsten

Anzeige
AW: kopierte Zeile in nächste freie Zeile einfügen
26.02.2014 23:53:28
Joerg
Es funktioniert.
Vielen Dank...

AW: kopierte Zeile in nächste freie Zeile einfügen
03.03.2014 16:12:22
Eugen
Hallo zusammen,
da ich auch genau dieses Problem habe, darf ich mich doch sicherlich anhängen. Den Code habe ich soweit eingefügt und angepasst(Spalte B):
Worksheets("Tabelle5").Activate
Range("A1:D1").Select
Selection.Copy
Workbooks.Open Filename:="Y:\Arbeitsordner\Auswertung.xlsx"
Worksheets("Ergebnis").Activate
With Sheets("Ergebnis")
.Range("B" & Cells(.Rows.Count, 1).End(xlUp).Row).PasteSpecial Paste:=xlPasteAll, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With

Dann bekomme ich aber einen Laufzeitfehler '9':Index außerhalb des gültigen Bereichs
Wo ist das Problem?
Schon mal Danke im voraus für die Bemühungen. Ich habe leider bisher keine Lösung gefunden.
Gruß
Eugen

Anzeige
AW: kopierte Zeile in nächste freie Zeile einfügen
03.03.2014 16:24:15
Oberschlumpf
Hi Eugen
Du hast Glück, dass ich mitbekam, dass von dir eine ganz neue Frage erstellt wurde.
Deine Vermutung "da ich auch genau dieses Problem habe, darf ich mich doch sicherlich anhängen." würde ich so nicht bestätigen.
Erstell lieber einen ganz neuen Thread - denn schon beantwortete Fragen werden in der Regel nicht weiter verfolgt.
Und ich hab zum Lösen deiner Frage gerad leider keine Zeit.
Ciao
Thorsten

Anzeige
AW: kopierte Zeile in nächste freie Zeile einfügen
26.02.2014 22:46:32
fcs
Hallo Joerg,
etwa wie folgt
Gruß
Franz
Sub K2_Q2_nach_Tabelle3()
Dim rngCopy As Range, rngLetzte As Range
Dim SpalteZ As Long, ZeileN As Long
If MsgBox("K2:Q2 nach Tabelle3 kopieren?", vbQuestion + vbOKCancel, _
"K2:Q2  K O P I E R E N") = vbCancel Then Exit Sub
Set rngCopy = Worksheets("Tabelle2").Range("K2:Q2")
With ActiveWorkbook.Worksheets("Tabelle3")
SpalteZ = 1 'Spalte in der K2 eingefügt werden soll 1 = A, 2 = B usw.
ZeileN = 2  '1. Zeile in der kopierte Werte einfügt werden sollen
'letzte benutzte Zelle ermitteln
Set rngLetzte = .Range(.Columns(SpalteZ), .Columns(SpalteZ + rngCopy.Columns.Count - 1)) _
.Find(What:="*", After:=.Cells(1, SpalteZ), LookIn:=xlFormulas, lookat:=xlWhole, _
searchorder:=xlByRows, searchdirection:=xlPrevious)
If Not rngLetzte Is Nothing Then
ZeileN = IIf(rngLetzte.Row 

Anzeige
AW: kopierte Zeile in nächste freie Zeile einfügen
26.02.2014 23:55:45
Joerg
Auch dieses Makro funktioniert.
Vielen Dank...
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Werte in die nächste freie Zeile einfügen mit Excel VBA


Schritt-für-Schritt-Anleitung

Um Werte von einem Tabellenblatt in die nächste freie Zeile eines anderen Tabellenblatts einzufügen, kannst Du den folgenden VBA-Code verwenden. Dieser Code kopiert die Werte von Tabelle2 (z.B. von Zelle K2:Q2) und fügt sie in die nächste freie Zeile von Tabelle3 ein.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Sub WerteInNächsteFreieZeileEinfügen()
       Sheets("Tabelle2").Range("K2:Q2").Copy
       With Sheets("Tabelle3")
           .Range("A" & Cells(.Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial Paste:=xlPasteAll
       End With
       Application.CutCopyMode = False
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro über Entwicklertools > Makros aus.

Dieser Code findet die nächste freie Zeile in Tabelle3 und fügt die kopierten Werte dort ein.


Häufige Fehler und Lösungen

  • Laufzeitfehler '9': Index außerhalb des gültigen Bereichs:

    • Stelle sicher, dass die Blattnamen (Tabelle2 und Tabelle3) korrekt sind. Wenn Du andere Namen verwendet hast, ändere sie im Code entsprechend.
  • Werte werden nicht korrekt eingefügt:

    • Überprüfe, ob die kopierten Daten in den richtigen Zellen platziert werden. Stelle sicher, dass der Zielbereich in Tabelle3 korrekt angegeben ist.

Alternative Methoden

Du kannst auch die Excel-Formel verwenden, um in die nächste Zeile zu schreiben, insbesondere wenn Du keine VBA-Lösungen verwenden möchtest. Eine einfache Formel, um den nächsten freien Platz zu ermitteln, könnte so aussehen:

  1. In Zelle A1 von Tabelle3 könntest Du die folgende Formel verwenden:
    =WENN(A1<>"";A1+1;1)
  2. Diese Formel prüft, ob die Zelle A1 leer ist und gibt 1 zurück, wenn dies der Fall ist, oder fügt 1 hinzu, wenn sie nicht leer ist.

Praktische Beispiele

Beispiel 1: Werte in die nächste freie Zeile einfügen

Sub K2_Q2_nach_Tabelle3()
    Dim rngCopy As Range
    Set rngCopy = Worksheets("Tabelle2").Range("K2:Q2")
    With Worksheets("Tabelle3")
        Dim letzteZeile As Long
        letzteZeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        rngCopy.Copy .Cells(letzteZeile, 1)
    End With
    Application.CutCopyMode = False
End Sub

In diesem Beispiel wird die letzte freie Zeile in Tabelle3 ermittelt und die Werte werden dort eingefügt.


Tipps für Profis

  • Verwende Application.ScreenUpdating = False am Anfang Deines Codes, um die Bildschirmaktualisierung während der Ausführung auszuschalten. Das beschleunigt den Prozess.
  • Setze Application.DisplayAlerts = False, um eventuelle Warnmeldungen zu unterdrücken, wenn Du mit Dateien arbeitest.

FAQ: Häufige Fragen

1. Wie finde ich die erste freie Zeile in Excel mit VBA?
Du kannst die folgende Zeile verwenden:

zeileN = Cells(Rows.Count, 1).End(xlUp).Row + 1

2. Kann ich die Werte auch direkt ohne Kopieren einfügen?
Ja, anstatt die Werte zu kopieren, kannst Du sie direkt zuweisen:

.Cells(letzteZeile, 1).Value = Worksheets("Tabelle2").Range("K2").Value

3. Wie kann ich das Makro ausführen, wenn ich nicht im VBA-Editor bin?
Du kannst das Makro über das Menü Entwicklertools > Makros ausführen oder einen Button in Dein Arbeitsblatt einfügen, um das Makro direkt zu starten.

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