Hallo Samuel,
als erstes hast du nicht sauber auf das jeweilige Blatt referenziert.
Es gehört nämlich vor jedes Range-Objekt (Range, Cells, Rows...) der entsprechende Blattname.
Ich habe das mit With - End With realisiert. Dabei wird auf das im With angegebene Blatt referenziert, indem vor jedem Range-Objekt ein Punkt gesetzt wird. Das ist einfacher als immer den Blattnamen davor setzen zu müssen.
Dann hast du beim Füllen der Variablen und beim Schreiben der Variablen den entsprechenden Blattnamen überhaupt nicht angegeben. Bedeutet, dass Excel dann dafür einfach das derzeit aktuelle Blatt verwendet.
Weiterhin mußt du nach dem Schreiben der Variablen in den Zielbereich deine zweite Schleife mit Exit For verlassen. Ansonsten läuft die weiter und alle Leerzellen im Zielblatt werden mit dem gleichen Wert aus dem Quellblatt beschrieben.
Ich wandle dann noch mit UCase(.Cells(... das Ja in Großbuchstaben um und vergleiche entsprechend mit "JA". Dadurch ist es egal inwelcher Schreibweise dein ja vorliegt.
Sub Kopieren()
Dim M As Long, intRowM As Long
Dim Wert As String, T As Long, intRowT As Long
With Worksheets("MockUp")
intRowM = .Cells(.Rows.Count, 11).End(xlUp).Row
For M = intRowM To 1 Step -1
If UCase(.Cells(M, 11)) = "JA" Then
Wert = .Cells(M, 8).Value
With Worksheets("ToDo")
intRowT = .Cells(.Rows.Count, 5).End(xlUp).Row
For T = intRowT To 1 Step -1
If IsEmpty(.Cells(T, 5)) Then
.Cells(T, 5) = Wert
Exit For
End If
Next T
End With
End If
Next M
End With
End Sub
Gruß Werner
|