Kiểm soát dữ liệu nhập trong ô bằng VBA (3 người xem)

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

congtutapyeu

Thành viên mới
Tham gia
2/11/12
Bài viết
12
Được thích
2
Em có một cột số chứng minh nhân dân, giờ em muốn kiểm soát dữ liệu này theo 2 điều kiện :
- Số ký tự nhập vào
- Không nhập trùng
Chi tiết xem file đính kèm...

Cảm ơn các anh chị đã quan tâm!
 

File đính kèm

Lần chỉnh sửa cuối:
Em có một cột số chứng minh nhân dân, giờ em muốn kiểm soát dữ liệu này theo 2 điều kiện :
- Số ký tự nhập vào
- Không nhập trùng
Chi tiết xem file đính kèm...

Cảm ơn các anh chị đã quan tâm!
Copy code cho vào sheet cần kiểm tra dữ liệu trùng. Nếu trùng ô vừa nhập sẽ bị xoá và sẽ chuyển con trỏ về dòng chứa dữ liệu bị trùng
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tim As Range
If Not Intersect(Target, [C5:C10000]) Is Nothing Then
   If Target <> "" Then
      If Target.Count = 1 Then
         Set tim = [C5:C10000].Find(Target.Value, , , 1)
         If Not tim Is Nothing Then
            If tim.Address <> Target.Address Then
               MsgBox "Data Existed"
               Target = ""
               tim.EntireRow.Select
            End If
         End If
      End If
   End If
End If
End Sub
 
Upvote 0
Em chỉ cần hiển thị ngày nhập trùng của số chứng minh đó thôi có được không anh, k cần select dòng đó ạ.

Em muốn kẹp thêm điều kiện đủ 9 số nữa vào code có được không ạ, nghĩa là :
+ Không nhập đủ 9 số vào cột C => Hiện thông báo báo cho người nhập biết và xóa luôn
+ Còn nhập trùng thì xóa và hiển thị ngày đã nhập số chứng minh đó.

Em xin cảm ơn!
 
Upvote 0
Em chỉ cần hiển thị ngày nhập trùng của số chứng minh đó thôi có được không anh, k cần select dòng đó ạ.

Em muốn kẹp thêm điều kiện đủ 9 số nữa vào code có được không ạ, nghĩa là :
+ Không nhập đủ 9 số vào cột C => Hiện thông báo báo cho người nhập biết và xóa luôn
+ Còn nhập trùng thì xóa và hiển thị ngày đã nhập số chứng minh đó.

Em xin cảm ơn!

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tim As Range
If Not Intersect(Target, [C5:C10000]) Is Nothing Then
   If Target <> "" Then
      If Target.Count = 1 Then
         If Len(Target) < 9 Then
            Target = ""
            MsgBox "Khong Du So"
            Exit Sub
         End If
         Set tim = [C5:C10000].Find(Target.Value, , , 1)
         If Not tim Is Nothing Then
            If tim.Address <> Target.Address Then               
               Target = ""
               MsgBox "Da nhap vao ngay " & tim.Offset(, -1)
            End If
         End If
      End If
   End If
End If
End Sub
 
Upvote 0
Em có một cột số chứng minh nhân dân, giờ em muốn kiểm soát dữ liệu này theo 2 điều kiện :
- Số ký tự nhập vào
- Không nhập trùng
Chi tiết xem file đính kèm...

Cảm ơn các anh chị đã quan tâm!


Giải pháp khác không dùng VBA có được không?

Nếu nhập trùng số CMND thì sẽ hiện thông báo "BẠN ĐÃ NHẬP TRÙNG SỐ CMND" và tô màu số đã có trước.

Trong File tôi dùng 2 chức năng:
- Conditional Formating để tô màu, với công thức (nếu muốn tô màu ở dòng trùng lặp lớn hơn thì thay $C$19 thành $C$19000 chẳng hạn:
=COUNTIF($C$5:$C$19,C5)>1


- Validation để thông báo với công thức trong thẻ Setting và nội dung thông báo trong thẻ Error Alert:
=MATCH(C5,$C:$C,0)=ROW(C5)
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom