Excel VBA中的时间运算

Excel VBA中的时间运算,excel,vba,Excel,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 如果时间>23且时间23或时间23或小时(现在)7且小

这就是我想做的,我意识到它不起作用

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
如果时间>23且时间<7,则
ws.Cells(Target.Row,12).Value=3
如果时间大于7,时间小于15,则
ws.Cells(Target.Row,12).Value=1
其他的
ws.Cells(Target.Row,12).Value=2
如果结束
我想用这些东西做什么。。。如果实际时间超过晚上11点但少于上午7点。。。它在一个单元格中写入3。。。等等问题是我意识到这个合成时间>23或时间<7不起作用。。。如何将时间函数与实际小时进行比较? 谢谢

试试这个

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
如果小时(现在)>23或小时(现在)7且小时(现在)<15,则
ws.Cells(Target.Row,12).Value=1
其他的
ws.Cells(Target.Row,12).Value=2
如果结束

您需要从时间中提取小时,您可以使用
DatePart
功能,例如

Dim CurrentHour
CurrentHour = DatePart("h", Time)

If CurrentHour > 23 Or CurrentHour < 7 Then
....
Dim当前小时
CurrentHour=日期部分(“h”,时间)
如果CurrentHour>23或CurrentHour<7,则
....

类似这样的东西。我使用了样本变量来代替目标,并且知道使用了哪个表
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
子定时()
将ws设置为工作表
双倍时间
设置ws=图纸(1)
dbTime=时间
如果dbTime>23/24或dbTime<7/24,则
ws.Cells(1,12)。值=3
如果dbTime>=7/24,dbTime<15/24,则
ws.Cells(1,12).Value=1
其他的
ws.Cells(1,12).Value=2
如果结束
端接头

小时不能大于23且小于7…:-)@PhilPursglove没错你是我纠正了我的错误。我应该比复制粘贴更清楚,这是我一问这个问题就想到的解决办法!谢谢你还需要满足一个7小时的条件——目前这个条件是7小时,所以当它正好是7小时时,它将以第三个条件结束并投入使用2@andreiIon我建议将
Time
设置为一个常量,这取决于您的代码有多长时间(尽管可能性很小)当代码执行时,动态变量将改变其值,从而导致不一致性