Xin giúp Code định dạng về thời gian (1 người xem)

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

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

Thaiduc

Thành viên hoạt động
Tham gia
13/3/07
Bài viết
118
Được thích
6
Nhờ các anh, chị tại Diễn đàn giúp mình code định dạng về thời gian như sau: Tại các ô (cell) trong một cột khi nhập từ TextBox trong From ngày, tháng, năm hoặc năm (không có ngày, tháng) theo dạng "dd/MM/yyyy" hoặc theo dạng "yyyy" đều chấp nhận (lưu ý: không sử dụng định dạng Text) cho cột. Ví dụ: nhập ngày, tháng, năm 31/12/2013 excel chấp nhận với định dạng "dd/MM/yyyy" hoặc cũng ô đó nhập năm 2013 (không có ngày, tháng) excel chấp nhận với định dạng "yyyy". Việc xác định định dạng này để tính toán về thời gian.
Rất mong các ang, chị giúp. Xin cám ơn.
 
Nhờ các anh, chị tại Diễn đàn giúp mình code định dạng về thời gian như sau: Tại các ô (cell) trong một cột khi nhập từ TextBox trong From ngày, tháng, năm hoặc năm (không có ngày, tháng) theo dạng "dd/MM/yyyy" hoặc theo dạng "yyyy" đều chấp nhận (lưu ý: không sử dụng định dạng Text) cho cột. Ví dụ: nhập ngày, tháng, năm 31/12/2013 excel chấp nhận với định dạng "dd/MM/yyyy" hoặc cũng ô đó nhập năm 2013 (không có ngày, tháng) excel chấp nhận với định dạng "yyyy". Việc xác định định dạng này để tính toán về thời gian.
Rất mong các ang, chị giúp. Xin cám ơn.
Bạn dùng code sau thử xem:
Public Sub dinh_dang_ngay()
Dim rng As Range, cll As Range, i As Long
Set rng = Range("A2:A" & Range("A65500").End(xlUp).Row)
For Each cll In rng
i = i + 1
If Len(cll(i, 1)) >= 5 Then
cll(i, 1).NumberFormat = "m/d/yyyy"
Else
cll(i, 1).NumberFormat = "yyyy"
End If
Next
End Sub
Ở đây vùng cần định dạng của tôi nằm ở cột A bắt đầu từ A2. Bạn có thể biến đổi cho phù hợp.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Xin các thầy sửa sửa đoạn code của em để có thể định dạng cho vùng bất kì bằng hộp thoại Inputbox.
P/S: Em đã làm được rồi! Code Định dạng cho vùng bất kì!
Public Sub dinh_dang_ngay1()
Dim rng As Range, cll As Range, i As Long
On Error Resume Next
Set rng = Application.InputBox("Ban hay chon vung can dinh dang", "Thong bao", Type:=8)
For Each cll In rng
i = i + 1
If Len(cll(i, 1)) >= 5 Then
cll(i, 1).NumberFormat = "m/d/yyyy"
Else
cll(i, 1).NumberFormat = "yyyy"
End If
Next cll
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cám ơn bạn nhiều.
Nhưng bạn xem lại, vì nhập năm 2013 vào ô A7 thì không hiện 2013 mà hiện 05/7/1905.
 
Upvote 0
Cám ơn bạn nhiều.
Nhưng bạn xem lại, vì nhập năm 2013 vào ô A7 thì không hiện 2013 mà hiện 05/7/1905.
Bạn thử đoạn code sau xem sao:
Public Sub dinh_dang_ngay1()
Dim rng As Range, cll As Range, i As Long
On Error Resume Next
Set rng = Application.InputBox("Ban hay chon vung can dinh dang", "Thong bao", Type:=8)
For Each cll In rng
i = i + 1
If Len(cll(i, 1)) >= 5 Then
cll(i, 1).NumberFormat = "mm/dd/yyyy"
Else
If cll(i, 1) <> "" And len(cll(i, 1)) < 5 Then
cll(i, 1)=cll(i,1)
End If
End If
Next cll
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Nhờ các anh, chị tại Diễn đàn giúp mình code định dạng về thời gian như sau: Tại các ô (cell) trong một cột khi nhập từ TextBox trong From ngày, tháng, năm hoặc năm (không có ngày, tháng) theo dạng "dd/MM/yyyy" hoặc theo dạng "yyyy" đều chấp nhận (lưu ý: không sử dụng định dạng Text) cho cột. Ví dụ: nhập ngày, tháng, năm 31/12/2013 excel chấp nhận với định dạng "dd/MM/yyyy" hoặc cũng ô đó nhập năm 2013 (không có ngày, tháng) excel chấp nhận với định dạng "yyyy". Việc xác định định dạng này để tính toán về thời gian.
Rất mong các ang, chị giúp. Xin cám ơn.
Bạn nên đưa file đính kèm, code, form, textbox, ...
Một số ví dụ mà bạn chuot0106 đã đưa chỉ định dạng lại ngày tháng sau khi đã nhập liệu.
Tham khảo file tôi làm trên Form, TextBox ghi ngày tháng lên Sheet:
Mã:
Private Sub CommandButton1_Click()
    Dim Cll As Range
    Set Cll = Sheet1.Range("A65535").End(xlUp).Offset(1)
    If IsDate(TextBox1) Then
        TextBox1 = Format(TextBox1, "mm/dd/yyyy")
        Cll = TextBox1.Value
    ElseIf IsNumeric(TextBox1) Then
        Cll = TextBox1.Value
    Else
        MsgBox "Nhap Lieu Chua Dung Ngay Thang"
    End If
    TextBox1 = Empty
    TextBox1.SetFocus
End Sub
 

File đính kèm

Upvote 0
Bạn nên đưa file đính kèm, code, form, textbox, ...
Một số ví dụ mà bạn chuot0106 đã đưa chỉ định dạng lại ngày tháng sau khi đã nhập liệu.
Tham khảo file tôi làm trên Form, TextBox ghi ngày tháng lên Sheet:
Mã:
Private Sub CommandButton1_Click()
    Dim Cll As Range
    Set Cll = Sheet1.Range("A65535").End(xlUp).Offset(1)
    If IsDate(TextBox1) Then
        TextBox1 = Format(TextBox1, "mm/dd/yyyy")
        Cll = TextBox1.Value
    ElseIf IsNumeric(TextBox1) Then
        Cll = TextBox1.Value
    Else
        MsgBox "Nhap Lieu Chua Dung Ngay Thang"
    End If
    TextBox1 = Empty
    TextBox1.SetFocus
End Sub
Cái khó là ở chỗ, tác giả muốn "Việc xác định định dạng này để tính toán về thời gian". Thế nên nếu, ví dụ năm 2014 mà để định dạng Gerenal thì không biết nó có tính được không?
 
Upvote 0
Cái khó là ở chỗ, tác giả muốn "Việc xác định định dạng này để tính toán về thời gian". Thế nên nếu, ví dụ năm 2014 mà để định dạng Gerenal thì không biết nó có tính được không?
Không có file nên đoán mò, nhưng tôi đoán (theo cảm tính) bạn đọc chưa kỹ bài #1, dữ liệu ngày tháng được viết ra từ TextBox (trong Form), và "theo dạng "dd/MM/yyyy" hoặc theo dạng "yyyy" đều chấp nhận (lưu ý: không sử dụng định dạng Text)".
Khi ghi giá trị ngày tháng từ TextBox xuống Sheet, nếu để dạng Text thì trên TextBox như thế nào thì trên Sheet cũng như vậy. Nếu Value giá trị thì ngày tháng trên Sheet sẽ thay đổi: nếu TextBox là d/m/yy thì trên sheet là m/d/yy. (Test thử sẽ biết), vì vậy mà tác giả "lưu ý: không sử dụng định dạng Text".
Bạn đang thắc mắc giá trị thời gian theo định dạng đầy đủ và một giá trị chỉ có năm (ví dụ 2014) thì có tính được hay không. Tác giả có nói cách tính đâu? Nếu bạn đọc kỹ một chút: "theo dạng "dd/MM/yyyy" hoặc theo dạng "yyyy" đều chấp nhận" thì bạn đừng quan tâm đến cách tính nữa, tôi nghĩ tác giả thừa biết và cũng có cách tính về thời gian (chỉ cần đặt điều kiện là có cách tính).
Hiện nay còn rất nhiều chứng từ (CMND, sơ yếu lý lịch, ...) vẫn còn sử dụng thời gian chỉ có năm (yyyy), nên ghi tác giả ghi "đều chấp nhận" thì cũng bình thường.
 
Upvote 0

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

Back
Top Bottom