Excel VBA:如果时间在两次之间,请将文本添加到行中,而不是空白

我试图根据条目上的时间戳在一行中的特定单元格中添加一个工作class次标签(Day,Swing,Grave)。 如果没有时间戳,我希望它什么也不做。

时间戳格式为“hh:mm:ss”,位于第6 / F行。

这是我迄今为止。 没有第四行,它将标记所有条目为天,否则没有骰子。

Sub Shift() Dim Time As Date, cel As Range For Each cel In Range("F2:F100000") If IsEmpty(cell.Value) Then Exit For If Time > TimeValue("06:00:00") And Time < TimeValue("14:00:00") Then cel.Offset(0, 2).Value = "Day" End If Next End Sub 

第四行给你带来意想不到的原因是因为你有Cell.Value ,而不是cel.value

If IsEmpty(cel.Value) Then Exit For

这将解决你的逻辑testing。 此外,你需要指定Time东西,否则它只会使用00:00:00

编辑:我强烈build议您将Option Explicit添加到您的子顶部(或通过Excel选项)。 这将迫使你声明一个variables,如果你正在使用一个。 这就是我在.1秒中发现这个错误的原因 – 我复制了你的macros,试图运行它,并且马上就突出显示了这条线。