VBA中的时间操作

时间:2012-01-19 10:01:58

标签: excel excel-vba 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 ...等等......问题在于我意识到这个比较时间&gt; 23或时间&lt; 7不起作用...如何比较时间功能与实际小时数? 谢谢!

3 个答案:

答案 0 :(得分:3)

试一试

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

答案 1 :(得分:3)

像这样的东西。我使用了样本变量来代替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

答案 2 :(得分:1)

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

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

If CurrentHour > 23 Or CurrentHour < 7 Then
....