Ваша проблема здесь:
For Each i In s.Range("A:A")
В этом случае каждый i
является объектом Range и представляет следующую ячейку в последовательности.
Но тогда вы пытаетесь использовать объект диапазона в качестве строки # в s.Cells(i, 1)
. Поэтому вместо этого вы должны просто использовать созданный вами объект диапазона:
For Each i In s.Range("A:A")
If i.Value = "" Then 'ERROR OCCURS HERE
i = Date
i.Offset(0, 1) = InputBox("What is your name?")
i.Offset(0, 2) = InputBox("What program are you calling on?")
i.Offset(0, 3) = Time()
Exit For
End If
Next i
Как указывает Alex K , вам было бы гораздо безопаснее определить свой i
как диапазон изначально Dim i as Range
, а затем вы всегда будете использовать i правильно. Затем вам нужно будет удалить строку i = 2
, так как она не нужна и фактически приведет к другой ошибке несоответствия типов
Другим предложением было бы переименовать i
во что-то более понятное, поэтому, читая этот код через 6 месяцев, сразу становится ясно, что я представляю.