



Khó lắm bạn ơi. Nếu người nhập là 3/2 thì code đâu có biết là 3 tháng 2 hay là 2 tháng 3. Canh me người nào nhập trật thì phạt bằng tiền là tự nhiên hết trật liền.Chào các bác!
báo nào cho em xin đoạn code để thông báo lỗi hoặc nhắc nhở nhập lại ngày theo định dạng dd/mm/yy tại cột A và H.
Em cảm ơn nhiều
Mình loại trường hợp đó ra được không bạn? Nếu cả ngày và tháng nhỏ hơn 12 thì không vấn đề gì. Nhưng nếu nhập là 1/15/14 thì báo lỗi
Chào các bác!
báo nào cho em xin đoạn code để thông báo lỗi hoặc nhắc nhở nhập lại ngày theo định dạng dd/mm/yy tại cột A và H.
Em cảm ơn nhiều
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, c As Range
Set r = Intersect(Target, Range("A:A,H:H"))
If r Is Nothing Then Exit Sub
On Error GoTo loi
For Each c In r
If c = "" Then GoTo thoat
If Day(DateValue(c.Text)) <> Val(Left(c.Text, 2)) Then GoTo loi
GoTo thoat
loi:
MsgBox "sai"
c.ClearContents
thoat:
Next
On Error GoTo 0
End Sub
Em có cách làm thủ công như sau: Em thực hiện phép tính: Tại cột M và N lập công thức tính tổng từng ô của cột A và H cộng với 1 số (ví dụ là 10). Nếu kết quả trả về là định dạnh ngày thì ok. nếu kết quả là #vallue thì sửa lại giá trị cột A và H.
Không biết có cách nào tạo đoạn code để thông báo nếu kết quả của phép tính là #Value


Cảm ơn bác nhiều!Mã:Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range, c As Range Set r = Intersect(Target, Range("A:A,H:H")) If r Is Nothing Then Exit Sub On Error GoTo loi For Each c In r If c = "" Then GoTo thoat If Day(DateValue(c.Text)) <> Val(Left(c.Text, 2)) Then GoTo loi GoTo thoat loi: MsgBox "sai" c.ClearContents thoat: Next On Error GoTo 0 End Sub
Tuy nhiên em vẫn còn chút băn khoăn nữa là: Khi mình nhập sai, nó thông báo sai. Khi thoát thông báo này thì dòng lệnh "c.ClearContents" tự động xóa dữ liệu tại ô đang nhập. Em muốn khi nhập sai thì nó xóa dữ liệu nhưng con trỏ vẫn hiện hành tại ô đó để mình nhập lại.Cảm ơn bác nhiều!
Em đã làm được rồi
Bạn thêm lệnh c.Select vào sau lệnh c.clearcontentsTuy nhiên em vẫn còn chút băn khoăn nữa là: Khi mình nhập sai, nó thông báo sai. Khi thoát thông báo này thì dòng lệnh "c.ClearContents" tự động xóa dữ liệu tại ô đang nhập. Em muốn khi nhập sai thì nó xóa dữ liệu nhưng con trỏ vẫn hiện hành tại ô đó để mình nhập lại.
Như vậy thì bổ sung code như thế nào ah?