Hỏi về hàm thời gian trong VBA. Tự động thực hiện một lệnh sau thời gian cho trước. (1 người xem)

Liên hệ QC

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

toantinhte87

Thành viên chính thức
Tham gia
2/3/14
Bài viết
62
Được thích
3
MÌnh có làm một tiện ít nhỏ để test kiến thức nhân viên.
Phần nội dung cơ bản mình đã làm xong hết nhưng con 1 phần mình chưa tìm ra để làm.
Yêu cầu của mình như sau:
Sau khi nhân viên đăng nhập vào tiện ích của mình trang Bài làm (nằm ở sheets 1) được mở.
Mình muốn sau 20 phút nếu nhân viên không nhấn vào nút nộp bài thì trang bài làm cũng tự chuyển sang trang đáp án (sheets 2)
Hoặc sau 20 phút thì hiện ra thông báo hết giờ và 1 nút ok để chuyển.
Mình có file đính kèm.
Mật khẩu vào làm bài là:
tên đăng nhập: 1
MK: 1
mật khẩu sửa code là: 1987
Cảm ơn!
P/s: Mình là người chưa biết về VBA nên hướng dẫn kỹ chút:
TK!
 

File đính kèm

Sleep 1000
Trên mạng có cài này nhưng không ổn.
Vì nó dừng lại nhưng chuột xoay tròn cấm mọi thao tác trên trang tính
 
Upvote 0
MÌnh có làm một tiện ít nhỏ để test kiến thức nhân viên.
Phần nội dung cơ bản mình đã làm xong hết nhưng con 1 phần mình chưa tìm ra để làm.
Yêu cầu của mình như sau:
Sau khi nhân viên đăng nhập vào tiện ích của mình trang Bài làm (nằm ở sheets 1) được mở.
Mình muốn sau 20 phút nếu nhân viên không nhấn vào nút nộp bài thì trang bài làm cũng tự chuyển sang trang đáp án (sheets 2)
Hoặc sau 20 phút thì hiện ra thông báo hết giờ và 1 nút ok để chuyển.
Mình có file đính kèm.
Mật khẩu vào làm bài là:
tên đăng nhập: 1
MK: 1
mật khẩu sửa code là: 1987
Cảm ơn!
P/s: Mình là người chưa biết về VBA nên hướng dẫn kỹ chút:
TK!

tôi sử dụng application.ontime ở sub 11
có dòng lệnh
Mã:
dtime = TimeSerial(Hour(Sheet2.[aa1]), Minute(Sheet2.[aa1]) + [COLOR=#ff0000]1[/COLOR], Second(Sheet2.[aa1]))
tôi set 1 phút để test bạn đổi thành 20 nha

khi đến giờ thì nó sẻ chạy sub "TimeOut"
tôi chỉ để một cái msgbox "hetGio" thôi, bạn muốn làm gì thì viết code vào đây (module 3)
 

File đính kèm

Upvote 0
tôi sử dụng application.ontime ở sub 11
có dòng lệnh
Mã:
dtime = TimeSerial(Hour(Sheet2.[aa1]), Minute(Sheet2.[aa1]) + [COLOR=#ff0000]1[/COLOR], Second(Sheet2.[aa1]))
tôi set 1 phút để test bạn đổi thành 20 nha

khi đến giờ thì nó sẻ chạy sub "TimeOut"
tôi chỉ để một cái msgbox "hetGio" thôi, bạn muốn làm gì thì viết code vào đây (module 3)
Quá tuyệt cho yêu cầu của mình.
Cảm ơn bạn nhiều.
Bạn giải thích được các câu lệnh cho minh thì tố quá. Mình muốn hiểu nó :(
Sub SetReminder()
On Error Resume Next


dtime = TimeSerial(Hour(Sheet2.[aa1]), Minute(Sheet2.[aa1]) + 1, Second(Sheet2.[aa1]))
Application.OnTime dtime, "SetReminder"
Application.OnTime dtime, "TimeOut"
If Time > dtime Then StopSetReminder




End Sub



Sub StopSetReminder()


Application.OnTime dtime, "SetReminder", , False


End Sub
 
Upvote 0
làm thì dể chứ giải thích thì hơi khó.............hìhì.........(thường thì giải thích cho rỏ ràng thì người đó phải cực kỳ am hiểu và có chút sư phạm nữa..........mà mấy cái đó thì tôi ko có..........hichic.
thôi thì giải thích sơ sơ vậy nha

1- trong code cho cái button "đăng nhập"
khi bạn đăng nhập xong, thì nó sẻ ghi lại thời gian ở cell AA1 sheet2. (nếu viết hay thì làm cách nào đó, ko cần ghi lại trên sheet)
rồi nó gọi sub "SetReminder"

2- ở sub "SetReminder" sử dụng Application.OnTime Method

đọc help của excel thì nó như vậy
"Schedules a procedure to be run at a specified time in the future (either at a specific time of day or after a specific amount of time has passed)."
môn na là: một cái chương trình sẻ được chạy ở một thời gian xác định
cú pháp của nó như sau:
Application.OnTime(EarliestTime, Procedure, LatestTime, Schedule)
EarliestTime: đây là thời gian mà mình đặt ra để gọi sub chạy
Procedure: tên sub mà mình gọi

bạn đọc help của excel sẻ rỏ hơn
 
Upvote 0
làm thì dể chứ giải thích thì hơi khó.............hìhì.........(thường thì giải thích cho rỏ ràng thì người đó phải cực kỳ am hiểu và có chút sư phạm nữa..........mà mấy cái đó thì tôi ko có..........hichic.
thôi thì giải thích sơ sơ vậy nha

1- trong code cho cái button "đăng nhập"
khi bạn đăng nhập xong, thì nó sẻ ghi lại thời gian ở cell AA1 sheet2. (nếu viết hay thì làm cách nào đó, ko cần ghi lại trên sheet)
rồi nó gọi sub "SetReminder"

2- ở sub "SetReminder" sử dụng Application.OnTime Method

đọc help của excel thì nó như vậy
"Schedules a procedure to be run at a specified time in the future (either at a specific time of day or after a specific amount of time has passed)."
môn na là: một cái chương trình sẻ được chạy ở một thời gian xác định
cú pháp của nó như sau:
Application.OnTime(EarliestTime, Procedure, LatestTime, Schedule)
EarliestTime: đây là thời gian mà mình đặt ra để gọi sub chạy
Procedure: tên sub mà mình gọi

bạn đọc help của excel sẻ rỏ hơn
Hơ. Công nhận là mình không biết gì :D.
Thôi cái gì không biết tìm hiều sau. cứ dùng cái của bản cũng quá tốt rồi. :D
Cần viết them cái gì viết giúp mình nhé.
Cảm ơn bạn nhiều
 
Upvote 0
làm thì dể chứ giải thích thì hơi khó.............hìhì.........(thường thì giải thích cho rỏ ràng thì người đó phải cực kỳ am hiểu và có chút sư phạm nữa..........mà mấy cái đó thì tôi ko có..........hichic.
thôi thì giải thích sơ sơ vậy nha

1- trong code cho cái button "đăng nhập"
khi bạn đăng nhập xong, thì nó sẻ ghi lại thời gian ở cell AA1 sheet2. (nếu viết hay thì làm cách nào đó, ko cần ghi lại trên sheet)
rồi nó gọi sub "SetReminder"

2- ở sub "SetReminder" sử dụng Application.OnTime Method

đọc help của excel thì nó như vậy
"Schedules a procedure to be run at a specified time in the future (either at a specific time of day or after a specific amount of time has passed)."
môn na là: một cái chương trình sẻ được chạy ở một thời gian xác định
cú pháp của nó như sau:
Application.OnTime(EarliestTime, Procedure, LatestTime, Schedule)
EarliestTime: đây là thời gian mà mình đặt ra để gọi sub chạy
Procedure: tên sub mà mình gọi

bạn đọc help của excel sẻ rỏ hơn
Bạn cho mình hỏi là bạn có viết thêm lệnh gì vào nút đăng nhập của mình không ạ????????
 
Upvote 0
Bạn cho mình hỏi là bạn có viết thêm lệnh gì vào nút đăng nhập của mình không ạ????????

Mã:
Private Sub CommandButton1_Click()
'--------------------------------------------------------------------------------------
For i = 2 To 20
If TextBox1 = Sheets("tg").Cells(i, 11) And TextBox2 = Sheets("tg").Cells(i, 12) And TextBox1 <> "" And TextBox1 <> "admin" Then
j = i 'TÏm dia chi cua o
 Application.Visible = True
    '-----Them so ngau nhien-----
    For n = 1 To 200
    If Sheets("LS").Cells(n, 2) <> "" Then
    num = Int(Rnd * 500 + 1)
    Sheets("LS").Cells(n, 1) = num
    End If
    Next n
    '---xoa noi dung bai-----
    m = 2
    For n = 1 To 20
    m = m + 2
    Sheets("BL").Cells(m, 2) = ""
    Next n
    '---------Sap xep ---------------
     ActiveWorkbook.Worksheets("LS").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("LS").Sort.SortFields.Add Key:=Range("A1"), SortOn _
        :=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("LS").Sort
        .SetRange Range("A1:F216")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    '-----------------------------------
    Sheets("BL").Select
   [COLOR=#ff0000]Sheet2.[aa1] = Now
         SetReminde[/COLOR]
..........................................................
2 dòng màu đỏ là tôi them vào code của bạn, bạn mở ra là thầy thôi mà
 
Upvote 0
Mã:
Private Sub CommandButton1_Click()
'--------------------------------------------------------------------------------------
For i = 2 To 20
If TextBox1 = Sheets("tg").Cells(i, 11) And TextBox2 = Sheets("tg").Cells(i, 12) And TextBox1 <> "" And TextBox1 <> "admin" Then
j = i 'TÏm dia chi cua o
 Application.Visible = True
    '-----Them so ngau nhien-----
    For n = 1 To 200
    If Sheets("LS").Cells(n, 2) <> "" Then
    num = Int(Rnd * 500 + 1)
    Sheets("LS").Cells(n, 1) = num
    End If
    Next n
    '---xoa noi dung bai-----
    m = 2
    For n = 1 To 20
    m = m + 2
    Sheets("BL").Cells(m, 2) = ""
    Next n
    '---------Sap xep ---------------
     ActiveWorkbook.Worksheets("LS").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("LS").Sort.SortFields.Add Key:=Range("A1"), SortOn _
        :=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("LS").Sort
        .SetRange Range("A1:F216")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    '-----------------------------------
    Sheets("BL").Select
   [COLOR=#ff0000]Sheet2.[aa1] = Now
         SetReminde[/COLOR]
..........................................................
2 dòng màu đỏ là tôi them vào code của bạn, bạn mở ra là thầy thôi mà
Đã hiểu chút chút rồi.
Mình muốn hiểu chút chút mới áp dụng làm cái khác được.
 
Upvote 0
Mã:
Private Sub CommandButton1_Click()
'--------------------------------------------------------------------------------------
For i = 2 To 20
If TextBox1 = Sheets("tg").Cells(i, 11) And TextBox2 = Sheets("tg").Cells(i, 12) And TextBox1 <> "" And TextBox1 <> "admin" Then
j = i 'TÏm dia chi cua o
 Application.Visible = True
    '-----Them so ngau nhien-----
    For n = 1 To 200
    If Sheets("LS").Cells(n, 2) <> "" Then
    num = Int(Rnd * 500 + 1)
    Sheets("LS").Cells(n, 1) = num
    End If
    Next n
    '---xoa noi dung bai-----
    m = 2
    For n = 1 To 20
    m = m + 2
    Sheets("BL").Cells(m, 2) = ""
    Next n
    '---------Sap xep ---------------
     ActiveWorkbook.Worksheets("LS").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("LS").Sort.SortFields.Add Key:=Range("A1"), SortOn _
        :=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("LS").Sort
        .SetRange Range("A1:F216")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    '-----------------------------------
    Sheets("BL").Select
   [COLOR=#ff0000]Sheet2.[aa1] = Now
         SetReminde[/COLOR]
..........................................................
2 dòng màu đỏ là tôi them vào code của bạn, bạn mở ra là thầy thôi mà
anh Let'GâuGâu xem bài này giúp http://www.giaiphapexcel.com/forum/...ực-hiện-Macro-phút-1lần-theo-thời-gian-thực-!
 
Upvote 0
Web KT

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

Back
Top Bottom