Dùng code gì để đổi thời gian để hiển thị ra giây, phút ?

Liên hệ QC

TrungChinhs

Thành viên tích cực
Tham gia
18/2/08
Bài viết
1,475
Được thích
2,469
Nghề nghiệp
Công chức
Trong code có câu lệnh đếm thời gian chaỵ code
PHP:
startTime = Timer
  ........
  .......
      EndTime = Timer
      MsgBox "Total Time: " & (EndTime - startTime)
Xin hỏi cách đổi thời gian để hiển thị ra giây, phút. Thanks!
 
Trong code có câu lệnh đếm thời gian chaỵ code
PHP:
startTime = Timer
  ........
  .......
      EndTime = Timer
      MsgBox "Total Time: " & (EndTime - startTime)
Xin hỏi cách đổi thời gian để hiển thị ra giây, phút. Thanks!
Không hiểu anh muốn hiển thị Phút để làm gì ---> Vì code mà chạy đến cở phút thì hơi bị oải lắm à nha (chạy cở vài chục giây thấy đã lâu lắm rồi) ---> Anh nghĩ sao?
 
Upvote 0
@ ndu:
1. Tôi không hiểu thời gian máy thông báo là gì, khi máy thông báo Total Time: 706137,81 thì tôi bấm giờ (bằng điện thoại di động) là 0:00:03.83 vì vậy tôi muốn đổi ra giây, phút (bỏ qua việc bấm nhanh hay chậm).
2. Tôi đang dùng một phần mềm tự viết dữ liệu khoảng 20.000 dòng mà nó chạy khoảng 10 phút, nhiều khi cứ tưởng nó chạy cả tiếng đồng hồ, nếu có thông báo này cũng đỡ sốt ruột.
 
Upvote 0
@ ndu:
1. Tôi không hiểu thời gian máy thông báo là gì, khi máy thông báo Total Time: 706137,81 thì tôi bấm giờ (bằng điện thoại di động) là 0:00:03.83 vì vậy tôi muốn đổi ra giây, phút (bỏ qua việc bấm nhanh hay chậm).
2. Tôi đang dùng một phần mềm tự viết dữ liệu khoảng 20.000 dòng mà nó chạy khoảng 10 phút, nhiều khi cứ tưởng nó chạy cả tiếng đồng hồ, nếu có thông báo này cũng đỡ sốt ruột.
Thật sự em cũng không rành lắm về đơn vị tính của Timer ---> Sau khi nghiên cứu, em cảm thấy anh dùng Time có vẻ đúng hơn là Timer đấy
Ví dụ:
PHP:
Sub Macro1()
    startTime = Time
     For i = 1 To 50000
       Cells(i, 1) = i
     Next
    EndTime = Time
    MsgBox "Total Time: " & Format((EndTime - startTime), "hh:mm:ss")
End Sub
Help trong VBA nói rằng "Time Return current system time"
Anh thử xem!
 
Lần chỉnh sửa cuối:
Upvote 0
Mình đã thử khoảng 50 lần với bài của bạn thì máy thông báo tương đương với đồng hồ bấm giờ (có sai số không đáng kể do việc bấm nhanh chậm) nhưng khi chạy trình với một chương trình khác thì lại không đúng, so sánh độ chênh lệch mình lấy kết quả chia cho 5 thì lại tương đương (EndTime - startTime)/5 , "hh:mm:ss") chẳng biết là tại sao ?.

Tạm gác cái vụ này ở đây đã, mất nhiều thời gian quá.
 
Upvote 0
Mình đã thử khoảng 50 lần với bài của bạn thì máy thông báo tương đương với đồng hồ bấm giờ (có sai số không đáng kể do việc bấm nhanh chậm) nhưng khi chạy trình với một chương trình khác thì lại không đúng, so sánh độ chênh lệch mình lấy kết quả chia cho 5 thì lại tương đương (EndTime - startTime)/5 , "hh:mm:ss") chẳng biết là tại sao ?.

Tạm gác cái vụ này ở đây đã, mất nhiều thời gian quá.
Có khi nào sự thiếu chính xác nằm ở chổ đặt biến không (Endtime)
Vậy anh thí nghiệm tiếp bằng cách bỏ bớt biến này xem thế nào:
PHP:
Sub Macro1()
    startTime = Time
     For i = 1 To 50000
       Cells(i, 1) = i
     Next
    MsgBox "Total Time: " & Format((Time - startTime), "hh:mm:ss")
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Timer có đơn vị tính là giây, từ đó quy ra giờ phút giây và % giây
PHP:
Sub Macro1()
    startTime = Timer
     For i = 1 To 50000
       Cells(i, 1) = i
     Next
    EndTime = Timer
    ttime = EndTime - startTime
    hh = Int(ttime / 3600)
    mm = Int((ttime - hh * 3600) / 60)
    ss = Int(ttime - hh * 3600 - mm * 60)
    ct = ttime - Int(ttime)
    
        MsgBox "Total Time: " & Chr(10) _
        & ttime & "s" & Chr(10) _
        & Format(hh, "00") & ":" & Format(mm, "00") & ":" _
        & Format(ss, "00") & ":" & Format(ct * 100, "00")
End Sub
 
Upvote 0
Timer có đơn vị tính là giây, từ đó quy ra giờ phút giây và % giây
PHP:
Sub Macro1()
    startTime = Timer
     For i = 1 To 50000
       Cells(i, 1) = i
     Next
    EndTime = Timer
    ttime = EndTime - startTime
    hh = Int(ttime / 3600)
    mm = Int((ttime - hh * 3600) / 60)
    ss = Int(ttime - hh * 3600 - mm * 60)
    ct = ttime - Int(ttime)
    
        MsgBox "Total Time: " & Chr(10) _
        & ttime & "s" & Chr(10) _
        & Format(hh, "00") & ":" & Format(mm, "00") & ":" _
        & Format(ss, "00") & ":" & Format(ct * 100, "00")
End Sub
Sự phụ ơi, còn TIME thì sao? Trong Help nói rằng TIME lấy theo giờ hệ thống ---> Vậy có phải ta dùng TIME sẽ thuận tiện hơn TIMER không? (khỏi quy đổi)
 
Upvote 0
Vậy có phải ta dùng TIME sẽ thuận tiện hơn TIMER không? (khỏi quy đổi)
Time chỉ lấy tới tròn giây thôi, còn Timer lấy giây tới cả chục số thập phân sau giây lận. Nên nếu cần chạy đua (code ngắn dưới 10 giây hoặc dưới 1 giây, 2 giây) thì coi bằng Timer cho chính xác.
Với lại học trên GPE, thấy Bác Sa toàn dùng Timer, nên mình làm theo.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Có khi nào sự thiếu chính xác nằm ở chổ đặt biến không (Endtime)
Vậy anh thí nghiệm tiếp bằng cách bỏ bớt biến này xem thế nào:
PHP:
Sub Macro1()
    startTime = Time
     For i = 1 To 50000
       Cells(i, 1) = i
     Next
    MsgBox "Total Time: " & Format((Time - startTime), "hh:mm:ss")
End Sub

Bái phục ndu: Đúng là Pan ở chỗ này.
Xin cảm ơn ndu96081631 ptm0412 đã nhiệt tình chỉ dẫn. Qua loạt bài này tôi mới biết khi nào thì dùng Time và khi nào dùng Timer (trước đây tôi vẫn nghĩ 2 đơn vị này là 1, chỉ là cách viết khác nhau) và thêm một kinh nghiệm đặt biến đúng chỗ.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình đã dùng code của các bạn để tính thời gian chạy code, rất ok.

startTime = Time
MsgBox "Total Time: " & Format((Time - startTime), "hh:mm:ss")
End Sub


Mình xin hỏi, mình có 01 textox, mình muốn thời gian chạy từng giây ( 00:00: 00....00:01:02) trên textbox này đến khi kết thúc thì mình phải làm sao.
Thank.
 
Upvote 0
PHP:
startTime = Timer
MsgBox "Total Time: " & Format((Timer - startTime), "#.##")
End Sub
 
Upvote 0
1 . Úi trời, sao lúc đầu gắn code chạy ngon lành, kết quả là : 00:01:09. Không biết sau chạy lần nữa nó báo lỗi " Type mismátch"

2. Xin hỏi Làm sao gắn giá trị này vào textbox, tức làm cho nó chạy từng giây khi đang chạy code.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom