thanhthanh_23
Thành viên mới
- Tham gia
- 26/8/10
- Bài viết
- 19
- Được thích
- 2
Bạn thử lách luật thế này xem sao.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.
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ồiBạ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 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
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.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.
Application.OnTime Now + TimeValue("00:00:01"), "nexttick", , False