Hi Tina,
entschuldige, hat etwas gedauert, hatte so viel zu tun. Anbei
der Code:
bitte benutze Einrückungen im Code und wenn du hier Code postest so benutze den pre-Tag, wird unterhalb des Eingabefensters erläutert.
Dann kann man Code viel flüssiger lesen.
Beim Dim von i machst du den üblichen Fehler wie jeder der mit Vba anfängt, ich auch früher, du hast „i“ als Variant deklariert.
Bei Dim i, j As Integer ist „i“ variant, J „Integer“
Korrekt ist Dim i As Integer, j As Integer
Nja, in dem Fall ist das irgendwie wurscht, weil du „j“ sowieso nicht benutzt und Integer für „i“ sowieso falsch ist.
Da Zeilen bis 65536 oder 1 Mio gehen können ist für Zeilen sowieso Long zwingend angesagt, da Integer nur bis 32xxx geht.
Also gewöhn dir wie ich bitte an Zeilen immer als Long zu definieren.
Und Spalten auch.
Jetzt wirst du staunen und denken wieso soll ich meine max. 256 Spalten als Long deklarieren.
Ganz einfach, Cells(Z,S) benötigt Long-Werte, d.h egal wie du Z oder S deklariert hast, sie werden im Codeablauf sowieso in Long-Werte umgewandelt, was bei vielen Zellen Zeitverlust bedeutet.
Noch ein Hinweis, Range(„c65536“) ist korrekt für XL97-XL2003, bei XL2007 mit 1 Mio Zeilen könnte es Probleme geben.
Also gewöhn dir bitte gleich an, dies so zu schreiben:
Range(„C“ & Rows.count)
bzw.
cells(rows.count,3)
dann ist dein Code zukunftsoffen, naja solange bis XL2010 kommt 
Nochwas, Select Case ist gut und übersichtlicher als viele Elseif, aber bei nur einer Überprüfung langt If.
Jetzt hau mich nicht daß ich dies alles sage und das ohne deine Code mal genauer angeschaut zu haben und was du da schriebst mit Bedingung einfügen usw.
Das kommt noch, aber ich muß da erst zu meinem Nikotindealer (Kiosk) gehen *Entzugserscheinungen hab*
Zumindest für mich sieht so dein Code besser aus:
Option Explicit
'
Sub tt()
Dim quelle As Worksheet
Dim ziel As Worksheet
Dim i As Long, j As Integer
Set quelle = Workbooks("quelldatei.xls").Worksheets("tabelle1")
Set ziel = Workbooks("zieldatei.xls").Worksheets("tabelle2")
For i = 4 To quelle.Range("c" & Rows.Count).End(xlUp).Row
If Not IsEmpty(quelle.Cells(i, 3)) Then
Select Case quelle.Cells(i, 3).Offset(0, 3).Value
Case True
quelle.Cells(i, 3).Copy ziel.Range("a" & Rows.Count).End(xlUp).Offset(1, 0)
End Select
End If
Next i
End Sub
Gruß
Reinhard