在VBA中的时间操作

这是我想要做的,我意识到这是行不通的。

If Time > 23 And Time < 7 Then ws.Cells(Target.Row, 12).Value = 3 ElseIf Time > 7 And Time < 15 Then ws.Cells(Target.Row, 12).Value = 1 Else ws.Cells(Target.Row, 12).Value = 2 End If 

我想用这个东西做什么…如果实际时间超过了11点但是不到7点…它在一个单元中写了3 …等等…问题是我意识到这个comporison时间> 23或时间<7不起作用…我怎么能比较时间function与实际小时? 谢谢!

试试这个

 If Hour(now) > 23 or Hour(now) <= 7 Then ws.Cells(Target.Row, 12).Value = 3 ElseIf Hour(now) > 7 And Hour(now) < 15 Then ws.Cells(Target.Row, 12).Value = 1 Else ws.Cells(Target.Row, 12).Value = 2 End If 

像这样的东西。 我已经使用示例variables来代替Target,并知道哪些表是ws

 Sub Timing() Dim ws As Worksheet Dim dbTime As Double Set ws = Sheets(1) dbTime = Time If dbTime > 23 / 24 Or dbTime < 7 / 24 Then ws.Cells(1, 12).Value = 3 ElseIf dbTime >= 7 / 24 And dbTime < 15 / 24 Then ws.Cells(1, 12).Value = 1 Else ws.Cells(1, 12).Value = 2 End If End Sub 

您需要从时间中提取小时,您可以使用DatePart函数(例如,

 Dim CurrentHour CurrentHour = DatePart("h", Time) If CurrentHour > 23 Or CurrentHour < 7 Then ....