Cách nhập thời gian 2230 tự chuyển thành 22:30 (1 người xem)

  • Thread starter Thread starter nnbt
  • Ngày gửi Ngày gửi
Liên hệ QC

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

nnbt

Thành viên mới
Tham gia
9/8/18
Bài viết
6
Được thích
0
Hiện em đang cần nhập 1 bản tài liệu toàn thời gian trong 24h nhưng mà nhập 22:30 thì quá mất thời gian, cho em hỏi cách chỉ cần nhập 2230 thì nó sẽ tự chuyển về 22:30 ạ. Em cảm ơn
 
Hiện em đang cần nhập 1 bản tài liệu toàn thời gian trong 24h nhưng mà nhập 22:30 thì quá mất thời gian, cho em hỏi cách chỉ cần nhập 2230 thì nó sẽ tự chuyển về 22:30 ạ. Em cảm ơn
Vụ này phải dùng đến code rồi, nhưng bạn cần đảm bảo nhập theo đúng định dạng, cụ thể là số phút phải được nhập 2 số. Ví dụ: 11:02 phải nhập là 1102 chứ không được nhập 112.
Nếu bạn đồng ý như vậy thì dùng code sau, có thể chỉnh sửa để điều chỉnh phạm vi áp dụng:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo EndSub
    Application.EnableEvents = False
    If Target > -1 And Target < 2360 Then
        Target = TimeValue(Target \ 100 & ":" & Target Mod 100)
        Target.NumberFormat = "HH:mm"
    End If
EndSub:
    Application.EnableEvents = True
End Sub
 
Vụ này phải dùng đến code rồi, nhưng bạn cần đảm bảo nhập theo đúng định dạng, cụ thể là số phút phải được nhập 2 số. Ví dụ: 11:02 phải nhập là 1102 chứ không được nhập 112.
Nếu bạn đồng ý như vậy thì dùng code sau, có thể chỉnh sửa để điều chỉnh phạm vi áp dụng:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo EndSub
    Application.EnableEvents = False
    If Target > -1 And Target < 2360 Then
        Target = TimeValue(Target \ 100 & ":" & Target Mod 100)
        Target.NumberFormat = "HH:mm"
    End If
EndSub:
    Application.EnableEvents = True
End Sub

Cần gì phức tạp vậy. Chọn định dạng Number ---> Custom và gõ định dạng trong Type: 00":"00
 
Cần gì phức tạp vậy. Chọn định dạng Number ---> Custom và gõ định dạng trong Type: 00":"00
Cái này "nhìn vậy mà không phải vậy" bác ạ. Thực chất 1102 nó vẫn là số "một ngàn một trăm lẻ hai" chứ không phải là "mười một giờ hai phút", như vậy mà đem tính toán thì thành ra trật lất mất.
 
Cái này "nhìn vậy mà không phải vậy" bác ạ. Thực chất 1102 nó vẫn là số "một ngàn một trăm lẻ hai" chứ không phải là "mười một giờ hai phút", như vậy mà đem tính toán thì thành ra trật lất mất.

Tác giả chỉ hỏi định dạng thôi anh, đâu có hỏi tính toán. Nếu tính toán thì đương nhiên là không được rồi :)
 
Tác giả chỉ hỏi định dạng thôi anh, đâu có hỏi tính toán. Nếu tính toán thì đương nhiên là không được rồi :)
Tác giả nói thế này:
Hiện em đang cần nhập 1 bản tài liệu toàn thời gian trong 24h nhưng mà nhập 22:30 thì quá mất thời gian, cho em hỏi cách chỉ cần nhập 2230 thì nó sẽ tự chuyển về 22:30 ạ. Em cảm ơn
Em hiểu chỗ màu đỏ là chuyển giá trị chứ không phải là chuyển định dạng (hiển thị trên màn hình).
Thôi thì cứ có 2 cách như vậy, tác giả thích xài cách nào thì xài.
Cảm ơn anh.
 
Tác giả nói thế này:

Em hiểu chỗ màu đỏ là chuyển giá trị chứ không phải là chuyển định dạng (hiển thị trên màn hình).
Thôi thì cứ có 2 cách như vậy, tác giả thích xài cách nào thì xài.
Cảm ơn anh.

Dùng lập trình Worksheet_Change hơi mạo hiểm nếu không thạo VBA, với code trên thì bất cứ ô nào cũng có thể tự động chuyển, miễn là số. Nếu không liên quan đến tính toán thì dùng định dạng là an toàn nhất.
 
Dùng lập trình Worksheet_Change hơi mạo hiểm nếu không thạo VBA, với code trên thì bất cứ ô nào cũng có thể tự động chuyển, miễn là số. Nếu không liên quan đến tính toán thì dùng định dạng là an toàn nhất.
Em biết, vậy nên mới có câu này: "có thể chỉnh sửa để điều chỉnh phạm vi áp dụng"
 
Vụ này phải dùng đến code rồi, nhưng bạn cần đảm bảo nhập theo đúng định dạng, cụ thể là số phút phải được nhập 2 số. Ví dụ: 11:02 phải nhập là 1102 chứ không được nhập 112.
Nếu bạn đồng ý như vậy thì dùng code sau, có thể chỉnh sửa để điều chỉnh phạm vi áp dụng:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo EndSub
    Application.EnableEvents = False
    If Target > -1 And Target < 2360 Then
        Target = TimeValue(Target \ 100 & ":" & Target Mod 100)
        Target.NumberFormat = "HH:mm"
    End If
EndSub:
    Application.EnableEvents = True
End Sub
1244 vào cell A1 rồi Enter, kết quả nhận được 12:44 <--- OK
Chọn cell A1 (đã có kết quả) rồi bấm F2, Enter, kết quả nhận được 00:01 <---- Téo tèo teo
Đồng ý với thầy Hướng rằng không nên dùng sự kiện Change để làm mấy việc này vì nó khá nguy hiểm. Theo tôi thì tác giả cứ nhập tùy ý đi, khi nào nhập xong, chạy 1 sub để lấy kết quả. Vậy khỏe hơn là cứ lúc nào cũng... change
 
1244 vào cell A1 rồi Enter, kết quả nhận được 12:44 <--- OK
Chọn cell A1 (đã có kết quả) rồi bấm F2, Enter, kết quả nhận được 00:01 <---- Téo tèo teo
Đồng ý với thầy Hướng rằng không nên dùng sự kiện Change để làm mấy việc này vì nó khá nguy hiểm. Theo tôi thì tác giả cứ nhập tùy ý đi, khi nào nhập xong, chạy 1 sub để lấy kết quả. Vậy khỏe hơn là cứ lúc nào cũng... change
OK. Em đồng tình với anh vụ này.
 
Web KT

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

Back
Top Bottom