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

Forumthread: VBA Zellen kopieren wenn Bedingung erfüllt

VBA Zellen kopieren wenn Bedingung erfüllt
05.06.2019 13:03:34
Markus
Hallo zusammen,
ich habe eine Tabelle 1 mit sämtlichen Daten und Statusmeldungen. Nun möchte ich ich die Zeile (von Spalte A bis Spalte BL) in ein neues Tabellenblatt2 verschieben (kopieren) wenn der Status "fertig" gesetzt wird. Ich habe schon etwas ähnliches gefunden, allerdings fügt das Makro die Zeile unterhalb meiner angegebenen Tabelleblatt 2 ein und bindet sie nicht in die markierte Tabelleblatt2 ein. Wenn möglich, sollte das Makro in der Tabelleblatt2 das aktuelle Datum der Fertigmeldung notieren.
Dieses Makro verwende ich, aber es verschiebt nicht alles (zwischen A und BL) in die Tabellenblatt2.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lngErste As Long
If Target.Column = 13 Then 'Spalte Status
If Target.Count = 1 Then
If UCase(Target) = "FERTIG" Then
With Worksheets("fertige Aufträge")
lngErste = IIf(IsEmpty(.Cells(.Rows.Count, 1)), _
.Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
Rows(Target.Row).Copy
.Cells(lngErste, 1).PasteSpecial Paste:=xlValues
Rows(Target.Row).Delete Shift:=xlUp
End With
End If
End If
End If
End Sub
Wenn mir da jemand einen Tipp geben könnte, was auch das Übertragungsdatum betrifft wäre ich echt froh.
Schon mal vielen Dank
Markus
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zellen kopieren wenn Bedingung erfüllt
05.06.2019 16:35:24
Hajo_Zi
Hallo Markus,
Die meisten bauen Deine Datei nicht nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Die meisten möchten es am Original testen um den gleichen Fehler zu erhalten.
Benutze hier im Forum die Funktion zum hochladen. Falls Du die nicht benutzen möchtest beachte, von unsicheren Servern wie z.B. www.file-upload.net lade ich keine Datei runter. (lt. Einschätzung meines Virenprogramms)

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zellen kopieren in Excel VBA bei erfüllter Bedingung


Schritt-für-Schritt-Anleitung

Um in Excel VBA Zeilen in ein anderes Tabellenblatt zu kopieren, wenn eine bestimmte Bedingung erfüllt ist, kannst du das folgende Makro verwenden. In diesem Beispiel wird eine Zeile kopiert, wenn in der Spalte für den Status der Wert „fertig“ eingetragen wird.

  1. Öffne die Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge in das entsprechende Arbeitsblattmodul (z.B. Tabelle1) den folgenden Code ein:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lngErste As Long
    If Target.Column = 13 Then 'Spalte Status
        If Target.Count = 1 Then
            If UCase(Target) = "FERTIG" Then
                With Worksheets("Tabelle2") 'Ändere den Namen des Tabellenblatts nach Bedarf
                    lngErste = IIf(IsEmpty(.Cells(.Rows.Count, 1)), _
                    .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
                    Rows(Target.Row).Copy
                    .Cells(lngErste, 1).PasteSpecial Paste:=xlValues
                    ' Aktuelles Datum in die nächste Spalte einfügen
                    .Cells(lngErste, 2).Value = Date
                    Rows(Target.Row).Delete Shift:=xlUp
                End With
            End If
        End If
    End If
End Sub
  1. Schließe den VBA-Editor und teste das Makro, indem du in der Statusspalte „fertig“ einträgst.

Häufige Fehler und Lösungen

  • Der Code funktioniert nicht: Stelle sicher, dass du das Makro im richtigen Arbeitsblattmodul eingefügt hast und dass der Name des Ziel-Tabellenblattes korrekt ist.
  • Zeile kopiert nicht vollständig: Achte darauf, dass die Zeilen von Spalte A bis BL korrekt referenziert werden. Der aktuelle Code kopiert alle Zellen der Zeile.
  • Das Datum wird nicht eingetragen: Überprüfe, ob die Zelle für das Datum richtig adressiert ist. Im Beispiel wird es in der nächsten Spalte (B) eingetragen.

Alternative Methoden

Eine andere Möglichkeit besteht darin, die Excel-Funktion „Filter“ zu verwenden, um Daten zu extrahieren und in ein neues Blatt zu übertragen. Du kannst auch Power Query nutzen, um diese Aufgabe zu automatisieren.


Praktische Beispiele

Angenommen, du hast eine Tabelle mit Auftragsdaten und möchtest alle Aufträge, die den Status „fertig“ haben, in ein neues Blatt übertragen. Mit dem oben genannten Makro kannst du dies schnell erledigen.

Ein Beispiel könnte so aussehen:

  • Tabelle1 hat die Spalten: Auftragsnummer, Beschreibung, Status (in Spalte 13).
  • Wenn in der Status-Spalte „fertig“ steht, wird die gesamte Zeile in Tabelle2 kopiert und das aktuelle Datum in die zweite Spalte eingetragen.

Tipps für Profis

  • Nutze „Error Handling“ in deinem VBA-Code, um unerwartete Fehler zu vermeiden.
  • Experimentiere mit der AutoFilter-Methode, um nur bestimmte Zeilen zu kopieren.
  • Verwende benannte Bereiche, um den Code klarer und flexibler zu gestalten.

FAQ: Häufige Fragen

1. Kann ich mehrere Bedingungen einfügen?
Ja, du kannst mehrere If-Anweisungen oder eine Select Case-Struktur verwenden, um verschiedene Bedingungen zu überprüfen.

2. Wie kann ich den Code anpassen, um andere Daten zu kopieren?
Du kannst einfach die Spaltenreferenzen im Code ändern, um andere Zellinhalte zu kopieren. Achte darauf, die Zielzelle entsprechend anzupassen.

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