Hỏi hàm Ontime trong vba excel

Liên hệ QC

thanhthanh_23

Thành viên mới
Tham gia
26/8/10
Bài viết
19
Được thích
2
Chào các anh chị!
Em làm vba trên excel như file Timer_1 đính kèm, em dùng Hàm Ontime trong if thì bị báo lỗi nhưng nếu bỏ If thì vẫn bình thường. Xin cho em hỏi bị lỗi này sửa thế nào? Em cám ơn rất nhiều.
 

File đính kèm

Chào các anh chị!
Em làm vba trên excel như file Timer_1 đính kèm, em dùng Hàm Ontime trong if thì bị báo lỗi nhưng nếu bỏ If thì vẫn bình thường. Xin cho em hỏi bị lỗi này sửa thế nào? Em cám ơn rất nhiều.
Bạn thử lách luật thế này xem sao.
Mã:
Dim kt As Boolean
Sub startdown()
kt = False
Application.OnTime Now + TimeValue("00:00:01"), "nexttick"
End Sub
Sub nexttick()
If kt Then Exit Sub
Sheet1.Range("B1").Value = Sheet1.Range("B1").Value - TimeValue("00:00:01")
If TimeValue("00:00:01") <= Sheet1.Range("G1").Value And Sheet1.Range("b1").Value <= TimeValue("00:00:10") Then
    Sheet1.Shapes("Rectangle 2").Fill.ForeColor.RGB = RGB(255, 0, 0)
ElseIf Sheet1.Range("b1").Value = TimeValue("00:00:00") Then
    Sheet1.Shapes("Rectangle 2").Fill.ForeColor.RGB = RGB(255, 0, 0)
    nopbai
    Exit Sub
Else
    Sheet1.Shapes("Rectangle 2").Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
startdown
End Sub
Sub nopbai()
    If MsgBox("Ban muon nop bai?", vbYesNo, "Thong bao") = vbYes Then
        kt = True
    End If
End Sub
 
Upvote 0
Bạn thử lách luật thế này xem sao.
Mã:
Dim kt As Boolean
Sub startdown()
kt = False
Application.OnTime Now + TimeValue("00:00:01"), "nexttick"
End Sub
Sub nexttick()
If kt Then Exit Sub
Sheet1.Range("B1").Value = Sheet1.Range("B1").Value - TimeValue("00:00:01")
If TimeValue("00:00:01") <= Sheet1.Range("G1").Value And Sheet1.Range("b1").Value <= TimeValue("00:00:10") Then
    Sheet1.Shapes("Rectangle 2").Fill.ForeColor.RGB = RGB(255, 0, 0)
ElseIf Sheet1.Range("b1").Value = TimeValue("00:00:00") Then
    Sheet1.Shapes("Rectangle 2").Fill.ForeColor.RGB = RGB(255, 0, 0)
    nopbai
    Exit Sub
Else
    Sheet1.Shapes("Rectangle 2").Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
startdown
End Sub
Sub nopbai()
    If MsgBox("Ban muon nop bai?", vbYesNo, "Thong bao") = vbYes Then
        kt = True
    End If
End Sub
Cám ơn bạn rất nhiều. Nó hết lỗi rồi
 
Upvote 0
Bạn thử lách luật thế này xem sao.
Mã:
Dim kt As Boolean
Sub startdown()
kt = False
Application.OnTime Now + TimeValue("00:00:01"), "nexttick"
End Sub
Sub nexttick()
If kt Then Exit Sub
Sheet1.Range("B1").Value = Sheet1.Range("B1").Value - TimeValue("00:00:01")
If TimeValue("00:00:01") <= Sheet1.Range("G1").Value And Sheet1.Range("b1").Value <= TimeValue("00:00:10") Then
    Sheet1.Shapes("Rectangle 2").Fill.ForeColor.RGB = RGB(255, 0, 0)
ElseIf Sheet1.Range("b1").Value = TimeValue("00:00:00") Then
    Sheet1.Shapes("Rectangle 2").Fill.ForeColor.RGB = RGB(255, 0, 0)
    nopbai
    Exit Sub
Else
    Sheet1.Shapes("Rectangle 2").Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
startdown
End Sub
Sub nopbai()
    If MsgBox("Ban muon nop bai?", vbYesNo, "Thong bao") = vbYes Then
        kt = True
    End If
End Sub


Bạn cho hỏi dòng If kt Then Exit Sub có nghĩa là Nếu kt=true thì exit sub? Bạn giải thích dùm lý do tại sao nó không báo lỗi nữa? Cám ơn bạn.
 
Upvote 0
Bạn cho hỏi dòng If kt Then Exit Sub có nghĩa là Nếu kt=true thì exit sub? Bạn giải thích dùm lý do tại sao nó không báo lỗi nữa? Cám ơn bạn.
Tôi thấy người khác viết vẫn phải bẩy lỗi nó thôi, còn nguyên nhân chỉ dự đoán thôi chứ không biết chính xác không nửa (do tôi chỉ học mò, không qua trường lớp đào tạo nên không rõ bản chất nó). Nên tôi sẽ không phát biểu do chưa biết chính xác.
Mã:
Application.OnTime Now + TimeValue("00:00:01"), "nexttick", , False
 
Upvote 0
Web KT

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

Back
Top Bottom