Xin nhờ các anh trên GPE giúp đỡ! Trong VBA, Code đang chạy (là sub bình thường, không phải WS_change ), nếu giá trị A2 = A1 (A1 = 20, A2 là dữ liệu động tăng dần 5, 10 ,15 , 20, 25 …) thì *****(Buộc phải xảy ra) nếu A2 chưa bằng A1 thì chờ đến khi A2 = A1 để đạt được ***** rồi code tiếp tục, thì có khả thi không, khả thi thì mong các anh giúp viết code , xin cảm ơn !
Bạn tham khảo cái ni:
Option Explicit
Sub GPERun()
Dim J As Long, W As Long, Tmp As Double
Tmp = .Value
If Tmp > .Value Then
MsgBox "?"
Exit Sub
End If
Do
Tmp = Tmp + 0.02
If Tmp >= .Value Then GoTo GPE
Loop
Exit Sub
GPE:
MsgBox "Nó Day Ṛi!"
End Sub
giải thích giúp em chỗ Tmp =Tmp + 0.02, không hiểu vì sao cộng cho 0,02
(ọng với trị nào mà chả được;; Chỉ cần nó tăng dần là OK rồi còn gì!Cọng với 0.035 sẽ nhanh tiến đến đích nhanh hơn; Còn cọng với .01 sẽ là chậm hơn!
Em hiểu ra cái Tmp trong code rồi, lặp và Tmp cứ tăng cho đến khi bằng đk
, trong bài viết của em A2 là số Giây, A1 = 20, thì Tmp = Tmp + 0 , phải cần DoEvents chứ không chờ 60 giây cũng như 1 tuần !
Option Explicit
Sub GPERun()
Dim J As Long, W As Long, Tmp As Double
Tmp = .Value
Do
Tmp = Tmp + 0
If Tmp = .Value Then GoTo GPE
DoEvents
Loop
Exit Sub
GPE:
MsgBox "Nó Day Ṛi!"
End Sub
Code như Bạn viết sẽ chạy đến cuối đời, cho đến khi máy hỏng thì mới có kết quả.
Như vầy đi:
Sub GPERun()
Dim Tmp As Double, k As Integer
Tmp = [A2].Value
Do
k = k + 1
Tmp = Tmp + 5
If Tmp >= [A1].Value Then Exit Do
Loop
MsgBox "No Day Roi!. k = " & k
[A2] = Tmp
End Sub
Thầy hiểu nhầm ý bài viết của em rồi, Em có một code để cho thời gian chạy và ghi lại giây (0-59) ở ô A2, em đặt giá trị A1 = 20, còn code của thầy, nó tự cộng thêm 5 cho đến khi đạt điều kiện
Túm lại, code bài #5 của bạn đã chạy được chưa, và thỏa mong muốn của bạn chưa? Nếu rồi, thì không có gì nói nữa; nếu chưa thì tại sao chưa, cái gì bạn mong hơn nữa?
Có thắc mắc nho nhỏ, không hiểu sao giây nhảy đến 20, mặc dù đạt điều kiện A2=A1 rồi nhưng code không msgBox, tôi nghĩ tại giây nhảy nhanh thì phải
Chắc chắn là không bao giờ thỏa mãn rồi, vì tmp +0 có thay đổi đâu,
Tốt nhất bạn nên up kèm cả code tăng giây của bạn lên đây thì mới test được, cũng như sửa code cho đúng
Đây ạ, file đính kèm ( em nhầm Kt = True (thứ nhất) chứ không phải False)
Không biết start top của bạn làm cái gì,
Thử chuyển thành thế này, sub sau sẽ có tác dụng đến giây 20 (B9)
Sub ValueDK()
Dim t
t = Timer
Kt = True ''doi la true de kiem tra
If Kt Then
Do
If Timer – t > 120 Then '' neu qua 120 giay thi thoat khoi sub
MsgBox "thoi gian cho lau qua, khong thay doi"
Exit Sub
End If
If Sheets("Sheet1")..Value2 = Sheets("Sheet1")..Value2 Then GoTo GPE
DoEvents
Loop
End If
GPE:
StopTimer ''them cai nay de dung (stop) timer, neu khong thich thi bo dong code nay
MsgBox "Hello"
End Sub
www.giaiphapexcel.com/diendan/threads/ch%E1%BB%9D-x%E1%BA%A3y-ra-%C4%91i%E1%BB%81u-ki%E1%BB%87n-if-%C4%91%E1%BB%83-%C4%91%E1%BA%A1t-%C4%91%C6%B0%E1%BB%A3c-then.111803/
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học