Nhập số tự động chuyển thành ngày tháng dạng đ/mm/yy (1 người xem)

Liên hệ QC

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

AnhThu-1976

Thành viên tích cực
Tham gia
17/10/14
Bài viết
1,063
Được thích
175
Chào các bạn
Các bạn giúp mình 1 code như sau:
Ví dụ tại cột A của 1 sheet và ngày của máy tính đang là ngày 01/08/2015
1/Tại ô A1 tôi nhập : 09 thì ô A1 trở thành 09/08/15 ( lấy tháng và năm của máy tính)

2/ Tại ô A1 tôi nhập : 0707 thì ô A1 trở thành 07/07/15 ( lấy năm của máy tính)

3/ Tại ô A1 tôi nhập : 070714 thì ô A1 trở thành 07/07/14

Lưu ý: chuyển về dạng dd/mm/yy mà tính toán được
Khi nhập thì nhập 2, 4 hay 6 số, nếu nhập 1,3, hay 5 số thì báo lỗi!
Do mình thường xuyên nhập ngày tháng nên muốn tìm cách nhập nhanh và chính xác nên mong các bạn giúp đỡ!
 
Chào các bạn
Các bạn giúp mình 1 code như sau:
Ví dụ tại cột A của 1 sheet và ngày của máy tính đang là ngày 01/08/2015
1/Tại ô A1 tôi nhập : 09 thì ô A1 trở thành 09/08/15 ( lấy tháng và năm của máy tính)

2/ Tại ô A1 tôi nhập : 0707 thì ô A1 trở thành 07/07/15 ( lấy năm của máy tính)

3/ Tại ô A1 tôi nhập : 070714 thì ô A1 trở thành 07/07/14

Lưu ý: chuyển về dạng dd/mm/yy mà tính toán được
Khi nhập thì nhập 2, 4 hay 6 số, nếu nhập 1,3, hay 5 số thì báo lỗi!
Do mình thường xuyên nhập ngày tháng nên muốn tìm cách nhập nhanh và chính xác nên mong các bạn giúp đỡ!
Bạn vào format Cells mà tùy chỉnh trong đó
 
Upvote 0
Chào các bạn
Các bạn giúp mình 1 code như sau:
Ví dụ tại cột A của 1 sheet và ngày của máy tính đang là ngày 01/08/2015
1/Tại ô A1 tôi nhập : 09 thì ô A1 trở thành 09/08/15 ( lấy tháng và năm của máy tính)

2/ Tại ô A1 tôi nhập : 0707 thì ô A1 trở thành 07/07/15 ( lấy năm của máy tính)

3/ Tại ô A1 tôi nhập : 070714 thì ô A1 trở thành 07/07/14

Lưu ý: chuyển về dạng dd/mm/yy mà tính toán được
Khi nhập thì nhập 2, 4 hay 6 số, nếu nhập 1,3, hay 5 số thì báo lỗi!
Do mình thường xuyên nhập ngày tháng nên muốn tìm cách nhập nhanh và chính xác nên mong các bạn giúp đỡ!
Mấy vụ liên quan đến ngày tháng, tốt nhất đừng có lười biếng... Cứ nhập đúng chuẩn sẽ không có chuyện gì xảy ra, nếu không sẽ có lúc bạn nhận một hậu quả đáng tiếc đấy
 
Upvote 0
Cái này chỉ có thể bằng cách trưng dụng 1 ô nào đó để nhập liệu ngày/tháng/năm cho 1 cột nào đó
Tất nhiện với sự trợ giúp bỡi VBA, như cách sau

Giả dụ tôi hay ai đó muốn nhập ngày/tháng/năm vô ô cuối của cột
Thì ta trưng dụng 1 ô như [F3] & nhập thứ gì vô đó thì nhập;
1 macro sự kiện tại ô này sẽ biến hóa thành ngày/tháng/năm như bạn muốn vô ô trống đầu tiên trong cột

Cũng không thừa để lưu í rằng: Là cách này cũng không sửa được nếu nhập hư.
 
Upvote 0
người chính tắc không làm như chủ thread đâu. nhưng mà bạn lười giống tui nên cố giúp bạn
Mã:
Option Explicit
Const MY_COLUMN = 1

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With MyText
        If Target.Column = MY_COLUMN Then
            If Target(1) = vbNullString Or IsDate(Target(1)) Then
                .Left = Target.Left + 0.5
                .Top = Target.Top + 0.5
                .Width = Target.Width - 1
                .Height = Target.Height - 1
                .Visible = True
                .Text = SpecifyMyText(Target(1))
                .Activate
                [COLOR=#0000ff].SelStart = 0
                .SelLength = Len(.Text)[/COLOR]
            Else
                .Visible = False
            End If
        Else
            .Visible = False
        End If
    End With
End Sub

Private Sub MyText_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Dim Cll As Range, MyMonth As Integer, MyYear As Integer, StrDay$, StrMonth$, StrYear$
    Set Cll = MyText.TopLeftCell
    Select Case KeyCode
        Case 13 'ENTER
            MyMonth = Month(Date)
            MyYear = Year(Date)
            With MyText
                If .Text = vbNullString Then
                    Cll = vbNullString
                ElseIf Not IsNumeric(MyText) Then
                    Exit Sub
                Else
                    Select Case Len(.Text)
                        Case 1, 3, 5: MsgBox "Invalid input!"
                        Case 2
                            Cll = DateSerial(MyYear, MyMonth, MyText)
                        Case 4
                            StrDay = Left(MyText, 2)
                            StrMonth = Right(MyText, 2)
                            Cll = DateSerial(MyYear, StrMonth, StrDay)
                        Case 6
                            StrDay = Left(MyText, 2)
                            StrMonth = Mid(MyText, 3, 2)
                            StrYear = Right(MyText, 2)
                            Cll = DateSerial(StrYear, StrMonth, StrDay)
                    End Select
                End If
            End With
            Cll.Offset(1).Select
        Case 9  'TAB
            If Shift = 1 Then
                Cll.Previous.Select
            Else
                Cll.Next.Select
            End If
    End Select
End Sub

Private Function SpecifyMyText$(Target As Range)
    Dim MyDate As Date
    If IsDate(Target) Then
        MyDate = CDate(Target)
        SpecifyMyText$ = Format(MyDate, "dd") & Format(MyDate, "mm") & Format(MyDate, "yy")
    Else
        MyText = vbNullString
    End If
End Function

P/S: MyText là một cái TextBox nằm trên Sheet làm việc, ở đây áp dụng cho cột A (Column = 1). bạn sửa lại cho đúng nhu cầu.
2 dòng màu xanh có thể bỏ (thêm vào để xóa cho lẹ)
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom