Hàm TimeSerial

vbano1

SMod
Thành viên BQT
Hôm nay mình giới thiệu hàm TimeSerial, hàm này có giá trị trả về là giờ phút giây.

Cấu trúc code:
TimeSerial(giờ, phút, giây)
Giá trị trả về là kiểu Ngày tháng (Date)
Diễn giải:

Giờ: 0~23. Ngoài ra bạn ó thể chỉ định là số âm như -1 hoặc là 24 trở lên. 24 là quá nửa đêm, sang ngày mới trở thành 0 giờ.
Phút: 0~59. Ngoài ra bạn có thể chỉ định số âm như -1, hoặc là 60 trở lên. 60 là sau 1 giờ, phút sẽ là 0.
Giây: 0~59. Ngoài ra bạn có thể chỉ định số âm như -1, hoặc là 60 trở lên. 60 là sau 1 phút, giây sẽ là 0.
Thời gian khỏi tạo ban đầu của hàm là trả về giá trị 30/12/1899.
Cứ thể này thì khó hiểu nhỉ, cùng xem đoạn code dưới đây nhé:

Mã:
Dim t As Date

t = TimeSerial(1, 2, 3)
Debug.Print (t) ' 1:02:03
t = TimeSerial(24, 2, 3) ' Chỉ định giờ là 24
Debug.Print (t) '0:02:03 31/12/1899
t = TimeSerial(1, -1, 3) ' Chỉ định phút là -1
Debug.Print (t) ' 0:59:03
t = TimeSerial(1, 60, 3) ' Chỉ định phút là 60
Debug.Print (t) ' 2:00:03
t = TimeSerial(1, 2, -1) ' Chỉ định giây là -1
Debug.Print (t) ' 1:01:59
t = TimeSerial(1, 2, 60) ' Chỉ định giây là 60
Debug.Print (t) ' 1:03:00
Ta cũng có thể cỉ định thời gian bằng cách gán giá trị cho biến số.
Mã:
Dim t As Date
Dim hh As Integer
Dim nn As Integer
Dim ss As Integer

hh = 1
nn = 2
ss = 3

t = TimeSerial(hh, nn, ss)
Debug.Print (t) ' 1:02:03
Một bài viết như thế này chắc là mọi người không hài lòng rồi, nhưng phải có bài viết này để làm căn cứ cho bài viết sau, cùng chờ xem bài viết sau mình sẽ giới thiệu cho các bạn thứ gì hay ho nhé.
Nguon tham khao: 
 

tuhocvba

Administrator
Thành viên BQT
Có trường hợp chúng ta muốn VBA không hoạt động gì cả trong một khoảng thời gian. Tôi ví dụ đơn giản nhất là hẹn giờ tắt máy tính. Trong suốt thời gian chờ đó, VBA không có làm gì cả.

Hoặc là chúng ta chờ cho cái gì đó đang được tiến hành, khi nào nó kết thúc thì mới tiếp tục VBA. Ta ví dụ như đợi trình duyệt web truy cập xong trang web (chẳng liên quan gì tới VBA vì VBA không can thiệp được tốc độ truy cập web, nhưng nó biết được khi nào web được truy cập xong) để làm các công viêc khác.

Ta có hai phương pháp:
Số một:
Application.Wait (Độ chính xác đạt được là 1/100 giây)
Tham khảo ở đây:

Ví dụ: Macro đang được thực thi (đang chạy) sẽ tạm dừng cho tới thời điểm 6 giờ 23 chiều nay.

Mã:
Application.Wait “18:23:00”
Ta cũng có cách viết code khác, ở cách ghi này, người khác đọc sẽ hiểu hàm ý của người code là cho macro tạm dừng 10s.

Mã:
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 10
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
Hoặc là:

Mã:
Sub test()

    Application.Wait Now() + TimeSerial(0, 0, 10) '10s sau se xuat hien hop thoai OK

    MsgBox "OK"

End Sub
Số hai:Sleep (Độ chính xác đạt được là 1/1000 giây)

Mã:
Sleep 500 ‘không làm gì trong 500ms
 
Top