2012-01-19 61 views
0

這是我想要做的,我意識到它沒有工作。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不起作用...我怎麼能比較時間功能與實際小時? 謝謝!

回答

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

小時不能超過23 *更大,*小於7 ... :-) – PhilPursglove

+0

@PhilPursglove你說得對我糾正了我錯誤。應該知道比複製並粘貼lol –

+0

更好,這是我在問完問題後想到的解決方案!謝謝! –

1

你需要從時間,你可以用DatePart功能例如做提取小時

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

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

就是這樣。我已經使用替代目標的樣本變量和知道哪個片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 
+1

@andreiIon I建議將'Time'設置爲常量 - 取決於代碼的存在時間(儘管非常小),動態變量會隨着代碼執行而改變其值,這會導致失效 – brettdj