Эта ошибка означает, что вам необходимо объявить переменную i
и указать тип, прежде чем вы сможете ее использовать.Вы делаете это Dim i As Long
.
Кроме того, вам понадобится Next i
, чтобы указать, где заканчивается цикл.
Также проверьте If Target.Cells.Count > 1 Then Exit Sub
только один раз (вне цикла).
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
Dim i As Long
For i = 17 To 1015
If Not Intersect(Target, Range("D" & i)) Is Nothing Then
Range("E" & i).ClearContents
End If
Next i
End Sub
Не проверял, но это должно дать тот же результат:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("D17:D1015")) Is Nothing Then
Target.Offset(ColumnOffset:=1).ClearContents
End If
End Sub
Это должно быть быстрее, потому что не нужно зацикливаться.