Das Ziel dieses Codes besteht darin, eine Spalte in zu durchlaufen sheet1
und zu prüfen, ob jeder Wert mit dem der Werte in einer Zeile in übereinstimmt sheet2
. Wenn der Wert übereinstimmt, kopieren Sie 5 Zeilen mit Informationen von sheet2
über nach sheet1
in die spezifische Zeile, in der sie sich zu diesem Zeitpunkt befinden.
Symptome:
- Fehler 1004 in der ersten Zeile, in der sich die if-Anweisung befindet.
- Ich denke,
Next b
es wird auch einen Fehler werfen
VBA-Code:
For i = 8 To 17
For b = 7 To 21
If Sheets("Sheet1").Range(i, 2).Value = Sheets("Sheet2").Range(b, 1).Value Then
Sheets("Sheet2").Range("b,1:b,7").Copy Sheets("Sheet1").Range(i, 6)
Next b
End If
Next i
Antwort1
Um die Zeile und Spalte eines Bereichs als Zahlen anzugeben, müssen Sie Cells
anstelle von verwenden. Außerdem gibt Range
Ihre Zeile einen Fehler aus, da sie sich innerhalb der verschachtelten Anweisung befindet. Stattdessen sollten Sie die For-Schleife mit beenden und an den Rand der Anweisung verschieben.Next b
If
Exit For
Next b
If
For i = 8 To 17
For b = 7 To 21
If Sheets("Sheet1").Cells(i, 2).Value = Sheets("Sheet2").Cells(b, 1).Value Then
Range(Sheets("Sheet2").Cells(b, 1), Sheets("Sheet2").Cells(b, 7)).Copy Sheets("Sheet1").Cells(i, 6)
Exit For
End If
Next b
Next i