Вы объявляете значения после того, как вы их присвоили (startTime
, secondTime
и finalTime
).Как минимум, вам нужно изменить код, чтобы объявить, а затем назначить.(Кроме того, ваше первое утверждение if неверно; первый тест должен быть просто If timeRef < secondTime
.)
' Declare variables before assigning values to them
Dim startTime As Date
Dim secondTime As Date
Dim finalTime As Date
Dim timeRef As Date
i = 1
For Each cell In Range("D1:D10000")
If IsEmpty(cell.Value) Then Exit For
Select Case Range("N" & i).Value
Case 0 To 40
startTime = "13:00"
Case 40 To 60
secondTime = Range("V" & i).Value
Case 60 To 100
finalTime = Range("V" & i).Value
Case Else
' You should do something here; what if the cell is empty or invalid?
' You end up with no value assigned to anything when leaving the Select
End Select
timeRef = Range("V" & i).Value
If timeRef < secondTime Then
ElseIf timeRef >= secondTime And timeRef < finalTime Then
ElseIf timeRef > finalTime Then
End If
i = i + 1
Next
Поскольку у меня нет ваших данных для проверки, я понятия не имею,на самом деле будет работать, но исправит очевидные проблемы, которые помешают его работе.