Du gehst bei dir im Bereich G3:G2000 jede einzelne Zelle durch. Wenn die Zelle leer ist, dann ist auch die Sachnummer leer und dann brauchst du gar nicht erst anfangen in der Übersicht zu suchen.
Ohne den Code weiter zu hinterfragen:
For Each s In .Range("G3:G2000")
If s.Value <> "" Then
sachnummer = s.Value
IST = s.Offset(0, 8).Value
With Sheets("Übersicht").Range("A1:XX2000")
Set woche = .Find(Spalte, LookIn:=xlValues)
If Not IsEmpty(woche) Then
b = woche.Column
Set stelle = .Find(sachnummer, LookIn:=xlValues)
If Not IsEmpty(stelle) Then
a = stelle.Row
Set o = .Cells(a, b)
IST = o.Value
End If
End If
End With
End If
Next s
Mit IsEmpty() solltest du vorsichtig sein; das reagiert nur auf Empty und nicht auf "" (Text mit der Länge 0).
PS: Himmel-Arsch-Und-Zwirn! Nutzt beim Posten von Code das Quellabschnitt-Feature - soviel Zeit muss sein!
Code als Plain-Text ist schon schwer genug zu lesen... wenn dann noch alles falsch eingerückt ist, wird man ja irre... kein Wunder das da einer Probleme mit hat (#schlampig).
PPS: Mit reduzierter Verschachtelungstiefe:
For Each s In .Range("G3:G2000")
If s.Value = "" _
Then GoTo s_continue
sachnummer = s.Value
IST = s.Offset(0, 8).Value
With Sheets("Übersicht").Range("A1:XX2000")
Set woche = .Find(Spalte, LookIn:=xlValues)
If IsEmpty(woche) _
Then GoTo s_continue
Set stelle = .Find(sachnummer, LookIn:=xlValues)
If IsEmpty(stelle) _
Then GoTo s_continue
Set o = .Cells(stelle.Row, woche.Column)
IST = o.Value
End With
s_continue:
Next s
|