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

Forumthread: Zeilen in ein anderes Tabellenblatt verschieben

Zeilen in ein anderes Tabellenblatt verschieben
16.06.2004 22:24:06
Fritz
Hallo,
Bei dem folgenden Code klappt das mit dem Paste nicht.
Was mache ich da bitte falsch.

Sub ZeilenVerschieben()
Dim rfirst As Integer, rlast As Integer
Dim wksDAT As Worksheet, wksHTB As Worksheet
Set wksDAT = Sheets("Tabelle1")
Set wksHTB = Sheets("Tabelle2")
rlast = Cells(Rows.Count, 1).End(xlUp).Row
For rfirst = 2 To rlast
If InStr(Cells(rfirst, 1), "FA") Then
Cells(rfirst, 1).Cut
wksHTB.Cells(Rows.Count, 1).End(xlUp).Paste
Application.CutCopyMode = False
End If
Next rfirst
End Sub

Die jeweils ausgeschnittene Zeile soll in dem Tabellen2 unten rangeklebt werden.
Danke schin mal.
Grüße, Fritz
Anzeige
AW: Zeilen in ein anderes Tabellenblatt verschiebe
Uduuh
Hallo,
du überschreibst ja immer deine letzte beschriebene Zeile.
wksHTB.Cells(Rows.Count, 1).End(xlUp).Offset(1,0).Paste
Gruß aus'm Pott
Udo
AW: Zeilen in ein anderes Tabellenblatt verschieben
K.Rola
Hallo,
die Referenzierung ist nicht sauber. Das Ergebnis fällst nur Korrekt aus,
wenn Tabelle1 das aktive Blatt ist. Versuchs mal so:
Option Explicit

Sub ZeilenVerschieben()
Dim rfirst As Long, rlast As Long
Dim wksDAT As Worksheet, wksHTB As Worksheet
Set wksDAT = Sheets("Tabelle1")
Set wksHTB = Sheets("Tabelle2")
rlast = wksDAT.Cells(65536, 1).End(xlUp).Row
For rfirst = 2 To rlast
If InStr(wksDAT.Cells(rfirst, 1), "FA") Then
wksDAT.Cells(rfirst, 1).Cut _
wksHTB.Cells(65536, 1).End(xlUp).Offset(1, 0)
End If
Next
wksHTB.Rows(1).Delete
End Sub

Gruß K.Rola
Anzeige
AW: Zeilen in ein anderes Tabellenblatt verschieben
16.06.2004 23:01:06
Fritz
Hallo, KRola
das kommt schon ganz nah dran. Leider werden nicht die ganzen Reihen (die Datensätze), sondern nur die Werte aus SpalteA auf die Tabelle2 geschaufelt.
Wäre nett, wenn Du mir da noch'n Tipp geben könntest.
Fritz
AW: Zeilen in ein anderes Tabellenblatt verschieben
K.Rola
Hallo,
in deinem Code wird aber auch nur die Spalte A behandelt, willst du die ganze Zeile
oder nur einen Teil der Zeile?
Gruß K.Rola
Anzeige
AW: Zeilen in ein anderes Tabellenblatt verschieben
K.Rola
Hallo,
ich mach jetzt Feierabend, hier noch eine Variante für die gesamte Zeile:
Option Explicit

Sub ZeilenVerschieben()
Dim rfirst As Long, rlast As Long
Dim wksDAT As Worksheet, wksHTB As Worksheet
Set wksDAT = Sheets("Tabelle1")
Set wksHTB = Sheets("Tabelle2")
rlast = wksDAT.Cells(65536, 1).End(xlUp).Row
For rfirst = 2 To rlast
If InStr(wksDAT.Cells(rfirst, 1), "FA") Then
wksDAT.Rows(rfirst).Cut _
wksHTB.Cells(65536, 1).End(xlUp).Offset(1, 0)
End If
Next
End Sub

Gruß K.Rola
Anzeige
AW: Zeilen in ein anderes Tabellenblatt verschieben
16.06.2004 22:49:19
Fritz
Hallo, Uduuh.
Ich wäre ja schon froh gewesen, wenn's mir die Zeile überhaupt überschrieben hätte. Aber ich kriege die Fehlermeldung 483: Objekt unterstützt diese Eigenschaft oder Methode nicht. Also es wird leider nichts geschrieben.
Mit ganz vielen "Activates" und "selects" habe ich es ja schon mal geschafft. Aber dieses hin- und herhopsen zwischen den Tabellen wollte ich vermeiden.
Haste noch 'ne Idee?
Wäre schön.
Grüße, Fritz
Anzeige
AW: Zeilen in ein anderes Tabellenblatt verschieben
K.Rola
Hallo,
hast du meine Antwort noch nicht gesehen?
Gruß K.Rola
AW: Zeilen in ein anderes Tabellenblatt verschieben
16.06.2004 23:06:13
Fritz
Doch :-), habe gerade zurück geschrieben. Hat sich wohl überschnitten.
Fritz
Ich komme nicht dahinter
17.06.2004 00:19:06
Fritz
Hallo KRola und andere.
An dieser Stelle funktioniert es insofern, als dass die Zelle der ersten Spalte übertragen wird, aber nicht der gesamte Datensatz
wksDAT.Cells(rfirst, 1).Cut _
wksHTB.Cells(65536, 1).End(xlUp).Offset(1, 0)
Jetzt habe ich das mal so geschrieben
wskDAT.Cells(cells(rfirst, 1), cells(rfirst, 255)).cut
Aber das gibt auch eine Fehlermeldung (424 Objekt erforderlich.
Das gleiche bei: wskDAT.Rows(1).Cut
Ich kann das nicht ==:-(
Grüße, Fritz
Anzeige
Ich hab's ==:-))
17.06.2004 01:28:15
Fritz
So geht es.
Schönen Dank für's Anstubsen.

Sub ZeilenVerschieben()
Dim r As Integer
Dim rfirst As Long, rlast As Long
Dim wksDAT As Worksheet, wksHTB As Worksheet
Set wksDAT = Sheets("Tabelle1")
Set wksHTB = Sheets("Tabelle2")
wksDAT.Activate
rlast = wksDAT.Cells(65536, 1).End(xlUp).Row
For rfirst = 1 To rlast
If InStr(wksDAT.Cells(rfirst, 1), "FA") Then
'''Hier habe ich geändert
Rows(rfirst).Cut _
wksHTB.Cells(65536, 1).End(xlUp).Offset(1, 0)
End If
Next
wksHTB.Rows(1).Delete
End Sub

Gute Nacht, Fritz
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zeilen in ein anderes Tabellenblatt verschieben


Schritt-für-Schritt-Anleitung

Um Zeilen in ein anderes Tabellenblatt zu verschieben, wenn eine bestimmte Bedingung erfüllt ist, kannst du folgenden VBA-Code verwenden. Dieser Code verschiebt die gesamte Zeile aus "Tabelle1" in "Tabelle2", wenn in der ersten Spalte der Inhalt "FA" gefunden wird.

Sub ZeilenVerschieben()
    Dim rfirst As Long, rlast As Long
    Dim wksDAT As Worksheet, wksHTB As Worksheet
    Set wksDAT = Sheets("Tabelle1")
    Set wksHTB = Sheets("Tabelle2")

    rlast = wksDAT.Cells(Rows.Count, 1).End(xlUp).Row
    For rfirst = 2 To rlast
        If InStr(wksDAT.Cells(rfirst, 1), "FA") Then
            wksDAT.Rows(rfirst).Cut _
            wksHTB.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        End If
    Next rfirst
End Sub

Dieser Code geht die Zeilen in "Tabelle1" durch und überprüft, ob "FA" in der ersten Spalte vorhanden ist. Wenn dies der Fall ist, wird die gesamte Zeile in "Tabelle2" verschoben.


Häufige Fehler und Lösungen

  1. Fehlermeldung 483: Objekt unterstützt diese Eigenschaft oder Methode nicht
    Diese Fehlermeldung tritt auf, wenn du versuchst, eine Methode auf ein nicht aktives Blatt anzuwenden. Stelle sicher, dass das richtige Tabellenblatt aktiv ist oder verwende vollständige Referenzen wie im obigen Beispiel.

  2. Nur Werte aus Spalte A werden übertragen
    Dies passiert, wenn du nur die Zelle aus Spalte A ausschneidest. Stelle sicher, dass du die gesamte Zeile ausschneidest, wie im Beispiel gezeigt.

  3. Objekt erforderlich (Fehler 424)
    Achte darauf, dass du die Syntax korrekt verwendest. Zum Beispiel sollte wksDAT.Cells(rfirst, 1) anstelle von wskDAT.Cells(cells(rfirst, 1), cells(rfirst, 255)).cut verwendet werden.


Alternative Methoden

Wenn du nach einer Möglichkeit suchst, Excel-Zeilen automatisch zu verschieben, ohne VBA zu verwenden, kannst du die Filter- und Sortierfunktionen nutzen. Zum Beispiel kannst du die Zeilen filtern, die ein bestimmtes Kriterium erfüllen, und sie dann manuell in ein anderes Tabellenblatt kopieren.

Eine weitere Methode ist die Verwendung von Excel-Formeln, um Daten in ein anderes Blatt zu ziehen. Zum Beispiel könntest du die WENN-Funktion verwenden, um Daten dynamisch anzuzeigen, ohne sie physisch zu verschieben.


Praktische Beispiele

Angenommen, du hast eine Aufgabenliste in "Tabelle1", und du möchtest alle erledigten Aufgaben in "Tabelle2" verschieben. Du könntest den VBA-Code entsprechend anpassen, um nach dem Wort "Erledigt" zu suchen:

Sub ErledigteAufgabenVerschieben()
    Dim rfirst As Long, rlast As Long
    Dim wksDAT As Worksheet, wksHTB As Worksheet
    Set wksDAT = Sheets("Tabelle1")
    Set wksHTB = Sheets("Tabelle2")

    rlast = wksDAT.Cells(Rows.Count, 1).End(xlUp).Row
    For rfirst = 2 To rlast
        If wksDAT.Cells(rfirst, 2).Value = "Erledigt" Then
            wksDAT.Rows(rfirst).Cut _
            wksHTB.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        End If
    Next rfirst
End Sub

Hier wird die zweite Spalte auf "Erledigt" überprüft, um die entsprechenden Zeilen zu verschieben.


Tipps für Profis

  • Verwende Option Explicit: Dies hilft, Fehler durch nicht deklarierte Variablen zu vermeiden.
  • Aktiviere das Blattschutz: Wenn du das Tabellenblatt schützt, kannst du verhindern, dass unbefugte Änderungen an den Daten vorgenommen werden.
  • Nutze Datenvalidierung: Stelle sicher, dass die Eingaben in den Zellen korrekt sind, um die Bedingungen für das Verschieben der Zeilen zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich die Zeilen automatisch verschieben, wenn eine Bedingung erfüllt ist?
Du kannst VBA verwenden, um Zeilen zu verschieben, wenn eine bestimmte Bedingung erfüllt ist. Der Code oben zeigt, wie du dies umsetzen kannst.

2. Funktioniert dieser Code in Excel 365?
Ja, der bereitgestellte Code sollte in Excel 365 sowie in anderen Versionen von Excel funktionieren, die VBA unterstützen.

3. Kann ich auch mehrere Bedingungen verwenden?
Ja, du kannst zusätzliche Bedingungen in die If-Anweisung einfügen, um die Logik zu verfeinern, zum Beispiel If InStr(wksDAT.Cells(rfirst, 1), "FA") And wksDAT.Cells(rfirst, 2).Value = "Erledigt" Then.

4. Ist es möglich, die Zeilen statt zu schneiden zu kopieren?
Ja, anstelle von Cut kannst du Copy verwenden, um die Zeilen zu kopieren, ohne sie aus dem ursprünglichen Blatt zu entfernen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige