Xin hỗ trợ cách đặt thời gian chạy và dừng cho macro ạ!

Liên hệ QC

domjnjc

Thành viên chính thức
Tham gia
7/5/12
Bài viết
86
Được thích
13
File dưới e tham khảo của một pro trong forum về cách tạo ngẫu nhiên dữ liệu số ngẫu nhiên không trùng, em thêm được đoạn mã chạy tự động sau mỗi 10s, nhưng mục đích của em cuối cùng là: cứ sau 10s, Sub tự động chạy cho đến khi H1 đến J1 hiển thị giá trị "true" thì dừng lại 30s, nhờ các pro giúp e với ạ!
Sub Test() Range("A1:A30").Value = UniqueRandomNum(1, 1000, 30) alertTime = Now + TimeValue("00:00:10") Application.OnTime alertTime, "Test" End Sub Function UniqueRandomNum(Bottom As Long, Top As Long, Amount As Long) 'Application.Volatile '<--- Neu muon gia tri thay doi khi bam F9 On Error Resume Next If Amount > Top - Bottom + 1 Then Amount = Top - Bottom + 1 With CreateObject("Scripting.Dictionary") Do .Add Int(Rnd() * (Top - Bottom + 1)) + Bottom, "" Loop Until .Count = Amount UniqueRandomNum = WorksheetFunction.Transpose(.Keys) End With End Function
 

File đính kèm

  • GetUniqueRandNum.xls
    41 KB · Đọc: 6
Lần chỉnh sửa cuối:
File dưới e tham khảo của một pro trong forum về cách tạo ngẫu nhiên dữ liệu số ngẫu nhiên không trùng, em thêm được đoạn mã chạy tự động sau mỗi 10s, nhưng mục đích của em cuối cùng là: cứ sau 10s, Sub tự động chạy cho đến khi H1 đến J1 hiển thị giá trị "true" thì dừng lại 30s, nhờ các pro giúp e với ạ!
Sub Test() Range("A1:A30").Value = UniqueRandomNum(1, 1000, 30) alertTime = Now + TimeValue("00:00:10") Application.OnTime alertTime, "Test" End Sub Function UniqueRandomNum(Bottom As Long, Top As Long, Amount As Long) 'Application.Volatile '<--- Neu muon gia tri thay doi khi bam F9 On Error Resume Next If Amount > Top - Bottom + 1 Then Amount = Top - Bottom + 1 With CreateObject("Scripting.Dictionary") Do .Add Int(Rnd() * (Top - Bottom + 1)) + Bottom, "" Loop Until .Count = Amount UniqueRandomNum = WorksheetFunction.Transpose(.Keys) End With End Function

Bạn chạy thử xem. Thử ở khoảng 300 giây xem có ổn không

Mã:
Sub ChaySau30S()
    Dim Tm, Tm2
    
    Tm = Timer(): Tm2 = Timer()
  Do Until Timer() - Tm > 300
    If Timer() - Tm2 > 30 Then
        Call Test
        Tm2 = Timer()
    End If
  Loop

End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom