Hỏi: Làm thế nào để hiện giờ trên UserForm1?

Liên hệ QC

ongtrungducmx25

Thành viên gạo cội
Tham gia
5/2/07
Bài viết
2,077
Được thích
1,987
Nghề nghiệp
GV
Hỏi: Ai có biết code để hiện giờ trên UserForm1? Em có file đính kèm dưới đây
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
xin hỏi pác nao biết code để hiện giờ trên UserForm1,em có file đính kèm dưới đây

Trong Module1, anh dùng code sau :
PHP:
Sub gioi_click()
UserForm1.Show
Call Run
End Sub

Sub Run()
UserForm1.Label1.Caption = Now
Application.OnTime Now + TimeValue("00:00:01"), "run"
End Sub
 
Upvote 0
Bác cho đoạn code này vào để lấy thời gian. Thật sự em cũng không biết thêm chữ "Chiều" đó vào đâu nữa. Còn bác muốn nó tự chạy thời gian thì chắc phải dùng Flash quá! (Mà dùng làm sao thì phải kiếm được 1 biểu mẩu Flash thích hợp rồi chèn vào.
PHP:
Private Sub UserForm_Activate() Label1.Caption = Hour(Now()) & " gi" & ChrW(7901) & " " & Second(Now()) & " gi" & ChrW(226) & "y " End Sub
Chúc bác thành công! Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
Dựa theo code của bác hoangdanh282vn em đã tăng thêm tính kịch tính cho nó đây! File: http://www.mediafire.com/?m5y4dm4immz
PHP:
Public k  Sub gioi_click() UserForm1.Show If k = False Then k = True Call Run End Sub   Sub Run()     If k = True Then     UserForm1.Label1.Caption = Hour(Now()) & " gi" & ChrW(7901) & " " & Second(Now()) & " gi" & ChrW(226) & "y "     Application.OnTime Now + TimeValue("00:00:01"), "run"     End If End Sub
PHP:
Private Sub CommandButton1_Click() k = False Unload Me End Sub   Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then k = False End Sub
Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
xin hỏi pác nao biết code để hiện giờ trên UserForm1,em có file đính kèm dưới đây
Thủ tục này thực hiện khi bấm chuột lên nút lệnh CommandButton1 và ghi giờ hiện tại lên Label1.
Mã:
Private Sub CommandButton1_Click()
hh = Hour(Time())
Select Case hh
Case 0 To 11
  buoi = " sang"
Case 12
  buoi = " chieu"
Case 13 To 17
  buoi = " chieu"
  hh = hh - 12
Case Else
  buoi = " toi"
  hh = hh - 12
End Select
hh = Format(hh, "00")
mm = Format(Minute(Time()), "00")
Label1 = hh & " gio " & mm & " phút " & buoi
End Sub
Phân giờ sáng, chiều, tối theo ý riêng của tôi. Bạn chỉnh lại theo ý mình.
 
Upvote 0
nếu em làm trên menu để điều khiển UserForm thì có tên "hiengio" thì khai báo ở code đó như thế nào nhỉ! em không dùng CommandButton1 thì sẽ như thế nào Thầy Long
 
Upvote 0
Sao em thêm dòng này thì code chạy không ổn định vậy?
PHP:
Sub Run()     If k = True Then     UserForm1.Label1.Caption = Hour(Now()) & " gi" & ChrW(7901) & " " & Second(Now()) & " gi" & ChrW(226) & "y " _     & WorksheetFunction.Choose(WorksheetFunction.Round(Hour(Now()) / 6, 0) + 1, "S" & ChrW(225) & "ng", "Tr" & ChrW(432) & "a", "Chi" & ChrW(7873) & "u", "T" & ChrW(7889) & "i")       Application.OnTime Now + TimeValue("00:00:01"), "run"     End If End Sub
Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
Sao em thêm dòng này thì code chạy không ổn định vậy?
PHP:
Sub Run()
    If k = True Then
    UserForm1.Label1.Caption = Hour(Now()) & " gi" & ChrW(7901) & " " & Second(Now()) & " gi" & ChrW(226) & "y " _
    & WorksheetFunction.Choose(WorksheetFunction.Round(Hour(Now()) / 6, 0) + 1, "S" & ChrW(225) & "ng", "Tr" & ChrW(432) & "a", "Chi" & ChrW(7873) & "u", "T" & ChrW(7889) & "i")
 
    Application.OnTime Now + TimeValue("00:00:01"), "run"
    End If
End Sub
Thân.

hình như nó không hiểu luôn dòng lệnh này nhỉ! em cũng như pác zậy! không có động tịnh gì cả.
 
Upvote 0
À biết rồi! Đó là quá trình nạp dữ liệu không đúng. Em viết lại code như vầy!
PHP:
Public k As Boolean   Sub gioi_click() If k = False Then k = True Call Run UserForm1.Show End Sub   Sub Run()     If k = True Then     UserForm1.Label1.Caption = Hour(Now()) & " gi" & ChrW(7901) & " " & Second(Now()) & " gi" & ChrW(226) & "y " _     & WorksheetFunction.Choose(WorksheetFunction.Round(Hour(Now()) / 6, 0) + 1, "S" & ChrW(225) & "ng", "Tr" & ChrW(432) & "a", "Chi" & ChrW(7873) & "u", "T" & ChrW(7889) & "i")     Application.OnTime Now + TimeValue("00:00:01"), "run"     End If End Sub
PHP:
Private Sub CommandButton1_Click() k = False Unload Me End Sub   Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then k = False End Sub
Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
nếu em làm trên menu để điều khiển UserForm thì có tên "hiengio" thì khai báo ở code đó như thế nào nhỉ! em không dùng CommandButton1 thì sẽ như thế nào Thầy Long
Em viết các dòng lệnh trong sự kiện Initialize của Form

Mã:
Private Sub UserForm_Initialize()
hh = Hour(Time())
Select Case hh
Case 0 To 11
  buoi = " sang"
Case 12
  buoi = " chieu"
Case 13 To 17
  buoi = " chieu"
  hh = hh - 12
Case Else
  buoi = " toi"
  hh = hh - 12
End Select
hh = Format(hh, "00")
mm = Format(Minute(Time()), "00")
Label1 = hh & " gio " & mm & " phút " & buoi
End Sub
 
Upvote 0
có cách nào cho hiện thêm giờ điện tử không nhỉ! 05:11:01 PM
 
Upvote 0
Vậy bác chỉ cần 1 chữ Time là đủ rồi. Nếu bác không dùng cách này sớm thì đâu có mệt như vậy đâu.
Sub Run() If k = True Then UserForm1.Label1.Caption = Time Application.OnTime Now + TimeValue("00:00:01"), "run" End If End Sub
Chúc vui. Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
Không chạy là đúng rồi. Bác chỉ cho nó chạy có 1 lần thôi. Chứ có lặp lại quá trình nạp dữ liệu đâu. Bác xem file của em sẽ thấy có nhiều khác biệt lắm. File: http://www.mediafire.com/?mjmzmjmxxmm Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
ok có gì nhấn tin cho bạn sao nhé! thank

em muốn viết theo sự kiện này thì sao nhỉ
PHP:
Private Sub UserForm_Initialize()
........................
......................
.....................
thay cho sự kiện bên dưới thì sao nhỉ
PHP:
Private Sub Nhapdiem_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then k5 = False
End Sub
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
sao nó không chạy nhỉ!
Tôi thường làm đồng hồ Excel như sau:
Trong form MyTime viết thủ tục:
Mã:
Private Sub UserForm_Initialize()
StartTime
End Sub
để gọi thủ tục StartTime khi mở Form

Thủ tục StartTime sẽ gọi thủ tục MyClock sau giờ hiện tại 1 giây
Mã:
Sub StartTime()
Application.OnTime Now() + TimeSerial(0, 0, 1), "MyClock"
End Sub

Thủ tục MyClock sẽ lấy giờ, phút, giây đưa vào LabTime trong form MyTime. Sau đó gọi lại thủ tục StartTime
Mã:
Sub MyClock()
hh = Hour(Time())
mm = Minute(Time())
ss = Second(Time())
MyTime.LabTime = Format(hh, "00") & " gio " & mm & " phut " & ss & " giay"
StartTime
End Sub
 

File đính kèm

Upvote 0
Code của Thầy Long có thể rút ngắn như vầy. Nhưng code này không có hàm khống chế lệnh OnTime vì nó cứ như 1 vòng tuần hoàn chạy hoài không dừng được. Đó chính là lý do mình thêm lệnh k để khống chế khi tắt Form.
PHP:
Sub MyClock() hh = Hour(Time()) mm = Minute(Time()) ss = Second(Time()) MyTime.LabTime = Format(hh, "00") & " gio " & mm & " phut " & ss & " giay" Application.OnTime Now() + TimeSerial(0, 0, 1), "MyClock" End Sub
PHP:
Private Sub UserForm_Initialize() MyClock End Sub
Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
Giải pháp về SetTimer tốt hơn Application.OnTimer()!

Giải pháp tôi giới thiệu dưới đây có lẽ là tốt hơn hẳn OnTimer của Excel, chạy mịn màng!
Các bạn tạo một module rồi paste đoạn code dưới đây.

Mã:
Option Explicit

Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

Const TimerID As Long = 111276
Dim hwnd As Long

Sub BeginTimer()
    hwnd = Application.hwnd
    SetTimerPro hwnd
End Sub

Sub StopTimer()
    KillTimer hwnd, TimerID
End Sub

Function SetTimerPro(ByVal nHwnd As Long) As Long
    SetTimerPro = SetTimer(nHwnd, TimerID, 1000, AddressOf TimePro) '1000 = 1 giay
End Function

Function TimePro(ByVal H As Long, ByVal nMSG As Long, ByVal nID As Long, ByVal nTsys As Long)
    On Error Resume Next
    Application.Caption = Now()
End Function

Các bạn có thể tải file ví dụ về.

Nếu thấy hay đừng quên "Thank" :)
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom