Nhờ giải thích cách dùng hàm if so sánh ngày trong vba (1 người xem)

  • Thread starter Thread starter tnfsmith
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

tnfsmith

Thành viên hoạt động
Tham gia
26/3/07
Bài viết
151
Được thích
0
Giới tính
Nam
Mã:
[COLOR=blue]Private[/COLOR] [COLOR=blue]Sub[/COLOR] Workbook_Open() 
    [COLOR=blue]Dim[/COLOR] zone [COLOR=blue]As[/COLOR] [COLOR=blue]String[/COLOR] 
    [COLOR=blue]With[/COLOR] Worksheets("Sheet1").Range("F2") 
        .Value = Now() 
        .NumberFormat = "dd/MM/yyyy hh:mm:ss AM/PM" 
    [COLOR=blue]End With[/COLOR] 
    zone = Worksheets("Sheet1").Range("F2") 
    [COLOR=blue]If[/COLOR] zone >= "#dd/MM/yyyy 7:00:00 AM# And zone <= #dd/MM/yyyy 8:00:00 AM#" [COLOR=blue]Then[/COLOR] 
        Worksheets("Sheet1").Range("G2") = "sang" 
    [COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR] 
    [COLOR=blue]If[/COLOR] zone > "#dd/MM/yyyy 8:00:00 AM# And zone <= #dd/MM/yyyy 11:30:00 AM#" [COLOR=blue]Then[/COLOR] 
        Worksheets("Sheet1").Range("G2") = "chieu" 
    [COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR] 
    [COLOR=blue]If[/COLOR] zone > "#dd/MM/yyyy 11:30:00 AM# And zone <= #dd/MM/yyyy 2:00:00 PM#" [COLOR=blue]Then[/COLOR] 
        Worksheets("sheet1").Range("G2") = "chieu" 
    [COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR] 
    [COLOR=blue]If[/COLOR] zone > "#dd/MM/yyyy 2:00:00 PM#" [COLOR=blue]Then[/COLOR] 
        Worksheets("sheet1").Range("G2") = "sang" 
        Worksheets("Sheet1").Range("F2") = DateAdd("d", 1, Now()) 
    [COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR] 
End Sub
Kết quả trả về không như ý. Nhờ anh em hỗ trợ xem dùm mình so sánh thời gian như thế có hợp lý chưa.
Thanks so much!
 
.....
If zone >= "#dd/MM/yyyy 7:00:00 AM# And zone <= #dd/MM/yyyy 8:00:00 AM#" Then
Worksheets("Sheet1").Range("G2") = "sang"
End If
.........
[/CODE]
Kết quả trả về không như ý. Nhờ anh em hỗ trợ xem dùm mình so sánh thời gian như thế có hợp lý chưa.!

chưa hợp lý, vì các
#dd/MM/yyyy

không có con số cụ thể nào cả, nên khi đó hiểu là gì???
 
Upvote 0
Mã:
[COLOR=blue]Private[/COLOR] [COLOR=blue]Sub[/COLOR] Workbook_Open() 
    [COLOR=blue]Dim[/COLOR] zone [COLOR=blue]As[/COLOR] [COLOR=blue]String[/COLOR] 
    [COLOR=blue]With[/COLOR] Worksheets("Sheet1").Range("F2") 
        .Value = Now() 
        .NumberFormat = "dd/MM/yyyy hh:mm:ss AM/PM" 
    [COLOR=blue]End With[/COLOR] 
    zone = Worksheets("Sheet1").Range("F2") 
    [COLOR=blue]If[/COLOR] zone >= "#dd/MM/yyyy 7:00:00 AM# And zone <= #dd/MM/yyyy 8:00:00 AM#" [COLOR=blue]Then[/COLOR] 
        Worksheets("Sheet1").Range("G2") = "sang" 
    [COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR] 
    [COLOR=blue]If[/COLOR] zone > "#dd/MM/yyyy 8:00:00 AM# And zone <= #dd/MM/yyyy 11:30:00 AM#" [COLOR=blue]Then[/COLOR] 
        Worksheets("Sheet1").Range("G2") = "chieu" 
    [COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR] 
    [COLOR=blue]If[/COLOR] zone > "#dd/MM/yyyy 11:30:00 AM# And zone <= #dd/MM/yyyy 2:00:00 PM#" [COLOR=blue]Then[/COLOR] 
        Worksheets("sheet1").Range("G2") = "chieu" 
    [COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR] 
    [COLOR=blue]If[/COLOR] zone > "#dd/MM/yyyy 2:00:00 PM#" [COLOR=blue]Then[/COLOR] 
        Worksheets("sheet1").Range("G2") = "sang" 
        Worksheets("Sheet1").Range("F2") = DateAdd("d", 1, Now()) 
    [COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR] 
End Sub
Kết quả trả về không như ý. Nhờ anh em hỗ trợ xem dùm mình so sánh thời gian như thế có hợp lý chưa.
Thanks so much!
Muốn so sánh giờ thì đại loại thế này
PHP:
    With Worksheets("Sheet1")
        .Range("F2").Value = Now()
        If TimeValue(Now()) >= TimeValue("7:00") Then
            If TimeValue(Now()) <= TimeValue("8:00") Then
                .Range("G2") = "sang"
            End If
        End If
    End With
 
Upvote 0
Muốn so sánh giờ thì đại loại thế này
Mã:
    With Worksheets("Sheet1")
        .Range("F2").Value = Now()
        If [COLOR=#ff0000][B]TimeValue(Now()) >= TimeValue("7:00") [/B][/COLOR]Then
            If TimeValue(Now()) <= TimeValue("8:00") Then
                .Range("G2") = "sang"
            End If
        End If
    End With
Thử thay thế màu đỏ thành cái này xem sao!

TimeValue(Now) >= #7:00#

-\\/.-\\/.-\\/.-\\/.
 
Upvote 0
Mã:
[COLOR=blue]Private[/COLOR] [COLOR=blue]Sub[/COLOR] Workbook_Open() 
    [COLOR=blue]Dim[/COLOR] zone [COLOR=blue]As[/COLOR] [COLOR=blue]String[/COLOR] 
    [COLOR=blue]With[/COLOR] Worksheets("Sheet1").Range("F2") 
        .Value = Now() 
        .NumberFormat = "dd/MM/yyyy hh:mm:ss AM/PM" 
    [COLOR=blue]End With[/COLOR] 
    zone = Worksheets("Sheet1").Range("F2") 
    [COLOR=blue]If[/COLOR] zone >= "#dd/MM/yyyy 7:00:00 AM# And zone <= #dd/MM/yyyy 8:00:00 AM#" [COLOR=blue]Then[/COLOR] 
        Worksheets("Sheet1").Range("G2") = "sang" 
    [COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR] 
    [COLOR=blue]If[/COLOR] zone > "#dd/MM/yyyy 8:00:00 AM# And zone <= #dd/MM/yyyy 11:30:00 AM#" [COLOR=blue]Then[/COLOR] 
        Worksheets("Sheet1").Range("G2") = "chieu" 
    [COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR] 
    [COLOR=blue]If[/COLOR] zone > "#dd/MM/yyyy 11:30:00 AM# And zone <= #dd/MM/yyyy 2:00:00 PM#" [COLOR=blue]Then[/COLOR] 
        Worksheets("sheet1").Range("G2") = "chieu" 
    [COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR] 
    [COLOR=blue]If[/COLOR] zone > "#dd/MM/yyyy 2:00:00 PM#" [COLOR=blue]Then[/COLOR] 
        Worksheets("sheet1").Range("G2") = "sang" 
        Worksheets("Sheet1").Range("F2") = DateAdd("d", 1, Now()) 
    [COLOR=blue]End[/COLOR] [COLOR=blue]If[/COLOR] 
End Sub
Kết quả trả về không như ý. Nhờ anh em hỗ trợ xem dùm mình so sánh thời gian như thế có hợp lý chưa.
Thanks so much!
Thời gian phải liên tục cập nhật trên excel thì excel mới nhận biết mà so sánh, code sau giúp bạn cập nhật theo ý muốn ( giây TimeValue("00:00:01") hoặc phút TimeValue("00:01:00")hoặc giờTimeValue("01:00:00")
Mã:
Sub Auto_Open()
Ontimer
End Sub
Sub Ontimer()
Application.OnTime Now + TimeValue("00:01:00"), "ProTimer"
End Sub
Private Sub ProTimer()
Application.Caption = Format(Now(), "yyyy/mm/dd hh:mm:ss")
With Sheets("sheet1")
.Range("A1") = Format(Now(), "yyyy/mm/dd hh:mm:ss")
.Range("A2") = Format(Now(), "yyyy/mm/dd hh:mm")
End With
Workbook_Open 'you macro 
Ontimer
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0

Bài viết mới nhất

Back
Top Bottom