VBA Excel Zeile Kopieren und woanders einfügen

Mejo

Grünschnabel
Hallo zusammen,

ich habe ein Problem. Wie kann man ein "Mitglied" kopieren und in eine andere Tabelle einfügen. Wenn er zb deaktiviert wird soll die gesamte Zeile kopiert und in eine andere Tabelle eingefügt werden, wo die anderen deaktivierten Mitglieder sich befinden. Um es genauer zu verstehen, was ich damit meine werde ich es ausführlicher erklären. Nehmen wir an es gibt eine Tabelle, in dem sich alle Mitglieder befinden mit sämtlichen Informationen wie Vorname, Nachname, Geburtsdatum usw. Es gibt noch eine Spalte mit der Überschrift "Aktiv", wenn der Mitglied in dieser Zelle zb eine 0 hat, soll es automatisch in eine andere Tabelle kopiert und in der jetzigen Tabelle gelöscht werden. Und all die unteren nach oben gerückt werden, damit keine lücke ensteht. Wie könnte ich sowas schreiben?

Lg
 
Den Change-Event des Worksheetes nutzen um die Eingabe der Spalte Aktiv auszuwerten.

Visual Basic:
Private Sub Worksheet_Change(ByVal Target As Range)
    'TODO: Prüfen ob das Feld in der Spalte Aktiv ist.
    'TODO: Kopierroutine
End Sub
 
Ich danke dir für die schnelle Antwort. Ich habe gestern etwas versucht hat fast geklappt. Es kopiert nur 2 Zeilen und fügt es in eine andere Tabelle ein. Was habe ich falsch gemacht?

Code:
Dim a As Long
Dim i As Long
Dim b As Long

a = Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To a
    If Worksheets("Tabelle1").Cells(i, 20).Value = "1" Then
    Worksheets("Tabelle1").Rows(i).Copy
    Worksheets("Tabelle2").Activate
    b = Worksheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Row
    Worksheets("Tabelle2").Cells(b + 1, 1).Select
    ActiveSheet.Paste
    Worksheets("Tabelle1").Activate
    End If
Next
    Application.CutCopyMode = False
    DieseArbeitsmappe.Worksheets("tabelle1").Cells(1, 1).Select
 
Sollte es mehr kopieren? Ich kenne deine Daten nicht.
Der Code selber sieht nicht falsch aus.

Aber löse dich von den activate und select. Das führt nur zu Chaos. Arbeite mit Objekten
Visual Basic:
    Dim wsSource    As Worksheet
    Dim wsTarget    As Worksheet
    Dim rngRow      As Range
   
    Set wsSource = Worksheets("tabelle1")
    Set wsTarget = Worksheets("tabelle2")
   
    For Each rngRow In wsSource.Range("A2", wsSource.Range("A2").SpecialCells(xlCellTypeLastCell)).rows
        If rngRow.Cells(1, 20) = 1 Then
            rngRow.Copy wsTarget.Cells(wsTarget.rows.Count, 1).End(xlUp).Offset(1)
        End If
    Next rngRow
 
Danke :) es soll überprüfen ob in der 20. spalte eine 1 steht, wenn ja soll es kopieren und in die "Tabelle2" einfügen
 
Das macht mein Code
rngRow ist die ganze Zeile.
If rngRow.Cells(1, 20) = 1 Then prüft ob in der Spalte 20 eine 1 steht.
 
Danke hat geklappt aber jetzt habe ich ein anderes Problem. Ich habe eine Suchoption geschrieben aber es soll wenn ich wieder auf suchen klicke weitersuchen und nicht wieder von neu anfangen. Was muss ich schreiben?

Code:
Dim x As String
Dim y As String
Dim t As Integer
Dim i As Long
Dim z As String
z = ActiveSheet.UsedRange.Rows.Count
x = TextBox1
y = TextBox2
t = 0

If TextBox1 = "" And TextBox2 = "" Then
MsgBox "nicht gefunden!", vbExclamation
End If

For i = 2 To z
    If Cells(i, 1) = x And Cells(i, 2) = y Then
    t = 1
    Exit For

End If
Next
If t = 1 Then
ActiveSheet.Cells(i, 1).Select


Else
    MsgBox "nicht gefunden!", vbExclamation
    TextBox1 = ""
    TextBox2 = ""
    End If
 
Du musst ein Variable im Modul definieren (nicht in der Funktion). Diese behält den Wert auch, wenn du die Funktion verlässt.
Dann kannst du beim nächsten Suchen dort starten.
 
Dankeschön werde ich versuchen. Ich habe noch eine Frage. Meine Fragen haben wohl keine Ende :D Ich möchte zb G1:S2 addieren und wenn etwas in dieser Zelle geändert wird, soll der das Ergebnis automatisch auch ändern. Dies Funktioniert, wenn man es manuell eingibt "=Summe(G1:S2)" ich habe es nicht geschafft diese Formel in die jeweilige Zelle mit VBA zu schreiben.

Code:
ActiveSheet.Cells(last, 19).Value = "=SUMME" & "(" & Range("G" & last).Value "+" Range("H"&last).Value 'hier hinten noch die andere Zellen

So funktioniert es leider nicht. "last" steht für die Reihe.
 
Zurück