Thông báo lỗi khi nhập không đúng định dạng ngày (1 người xem)

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

humucxt

Thành viên mới
Tham gia
12/9/11
Bài viết
41
Được thích
1
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
 
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
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.
 
Upvote 0
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
 
Upvote 0
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

Người ta nhập sao là chuyện của người ta, nhưng nếu nhập sai quy định trong Control Panel thì chắc chắn kết quả sẽ là 1 TEXT, dẫn đến dữ liệu bị canh lề trái. Ngược lại, nhập đúng thì kết quả sẽ là NUMBER đồng thời dữ liệu được canh lề phải
Vậy, dùng hàm ISTEXT hoặc ISNUMBER để theo dõi là được rồi
(tuy nhiên cũng chỉ tương đối)
 
Upvote 0
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
 
Upvote 0
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ã:
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
 
Upvote 0
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

Dùng Data Validation làm thí thí như vầy coi có xài được không?
1/ Chọn cột A.
2/ Vào Data Validation làm như hình dưới.
ValiNgay.jpgValiNgay2.jpg
 
Upvote 0
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
Cảm ơn bác nhiều!

Em đã làm được rồi
 
Upvote 0
Cảm ơn bác nhiều!

Em đã làm được rồi
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.
Như vậy thì bổ sung code như thế nào ah?
 
Upvote 0
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.
Như vậy thì bổ sung code như thế nào ah?
Bạn thêm lệnh c.Select vào sau lệnh c.clearcontents
 
Upvote 0

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

Back
Top Bottom