Code không cho nhập dữ liệu trùng trên 3 cột (1 người xem)

Liên hệ QC

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

buithanhlong

Thành viên hoạt động
Tham gia
8/6/10
Bài viết
176
Được thích
141
Chào các Thầy và các anh chị trên diễn đàn! Tôi có một form nhập liệu trước đây thầy siwtom đã chỉnh sửa giúp tôi và đã chạy rất tuyệt vời, nay tôi muốn chỉnh sửa để đáp ứng yêu cầu công việc mới nhưng do trình độ còn hạn chế nên đã loay hoay hơn chục ngày nay vẫn không được, tôi nhờ các Thầy và các anh chị giúp đỡ. Cụ thể yêu cầu công việc như sau: vùng nhập dữ liệu gồm
Cột A: Số thứ tự
Cột B: Cột dự phòng (Sử dụng để đáp ứng một số yêu cầu khác nhau)
Cột C: Họ và Tên (Đây chính là cột mã)
Cột D: Địa chỉ
Cột E:Số chứng minh nhân dân (CMND)
Cột F: Số giấy phép lái xe (GPLX)

Cột G: Ghi chú
Yêu cầu công việc khi nhập liệu:
1. Cho phép nhập trùng dữ liệu tại cột C & cột D (Họ tên - địa chỉ có thể trùng)
2. Không cho phép nhập trùng dữ liệu đồng thời trên cả 3 cột C + D + (E hoặc F) . Nếu không có CMND thì phải có GPLX, bắt buộc phải có 1 trong 2 loại giấy tờ trên.
Rất mong sự quan tâm giúp đỡ của các Thầy và các anh chị. Trân trọng cám ơn
Ghi chú: file gốc có cột mã là cột A, đoạn code trên chỉnh sửa cột mã từ cột A sang cột C là của thầy siwtom, thầy siwtom đã viết code và chú thích rất chi tiết đoạn code trên. Trân trọng cám ơn Thầy và kính chúc Thầy cùng gia đình luôn mạnh khoẻ, hạnh phúc.
 

File đính kèm

Lần chỉnh sửa cuối:
bạn xem được chưa nha, tôi ko dùng code, chỉ dùng cthức ở trong validation
Cám ơn bác rất nhiều, nhưng vấn đề ở đây là bắt buộc phải sử dụng code và nhập liệu từ form bác ạ, bởi form trên được tách ra từ MultiPage gửi lên cho gọn. Rất mong bác quan tâm giúp đỡ. Xin cám ơn! Nhân ngày 8/3 xin gửi tới bác gái và những người phụ nữ mà bác yêu thương những lời chúc tốt đẹp nhất! Trân trọng
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn bác rất nhiều, nhưng vấn đề ở đây là bắt buộc phải sử dụng code và nhập liệu từ form bác ạ, bởi form trên được tách ra từ MultiPage gửi lên cho gọn. Rất mong bác quan tâm giúp đỡ. Xin cám ơn! Nhân ngày 8/3 xin gửi tới bác gái và những người phụ nữ mà bác yêu thương những lời chúc tốt đẹp nhất! Trân trọng

thử lại xem nha,
code bạn nhiều quá, tôi ko biết ráp nó vô như thế nào
tôi tạm khoá cái vòng lặp của "cboMa_Change"
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
thử lại xem nha,
code bạn nhiều quá, tôi ko biết ráp nó vô như thế nào
tôi tạm khoá cái vòng lặp của "cboMa_Change"
Cám ơn bác! tôi sẽ text thử xem kết quả, nếu có gì chưa ổn chắc lại phải phiền bác giúp đỡ, rất mong bác quan tâm. Một lần nữa cám ơn bác rất nhiều!
 
Upvote 0
Chào bác Let'GâuGâu! tôi đã chạy thử code của bác nhưng có lẽ chưa ổn lắm, cụ thể như sau:
1. Vì vô hiệu sự kiện cboMa nên không thực sự thuận lợi trong việc chọn, chỉnh sửa, xoá dữ liệu...
2. Yêu cầu công việc là không cho nhập trùng dữ liệu nếu cả 3 cột C + D + (E hoặc F) trùng, nhưng ở đây chỉ cần điều kiện (E hoặc F) trùng là đã báo, tất nhiên trong thực tế không thể có việc trùng số CMND hoặc số GPLX, nhưng như đã trao đổi với bác ở bài trên form này được tách ra từ MultiPage nên nó còn liên quan đến việc sử lý dữ liệu ở các form khác, do vậy bắt buộc nó phải có yêu cầu đó, mong bác thông cảm và cố gắng giúp đỡ.
3. Trong trường hợp này sử dụng điều khiển If hoặc Select Case có khả thi không bác? tôi đã thử ghi Macro xem nó làm việc ra sao để mà vận dụng nhưng do trình độ VBA của tôi còn hạn chế nên cái vụ này vẫn chưa ổn.
4. Vì điều kiện cho phép nhập trùng dữ liệu tại 2 cột C & D nên có lẽ phải thêm một nút lệnh sửa nữa phải không bác, nếu để 1 nút vừa ghi vừa sửa thì khi sửa dữ liệu chắc sẽ gặp lỗi.
Rất mong sự quan tâm giúp đỡ của bác Let'GâuGâu cũng như của các Thầy và các anh chị trên diễn đàn. Trân trọng cám ơn
 
Lần chỉnh sửa cuối:
Upvote 0
Chào bác Let'GâuGâu! tôi đã chạy thử code của bác nhưng có lẽ chưa ổn lắm, cụ thể như sau:
1. Vì vô hiệu sự kiện cboMa nên không thực sự thuận lợi trong việc chọn, chỉnh sửa, xoá dữ liệu...
2. Yêu cầu công việc là không cho nhập trùng dữ liệu nếu cả 3 cột C + D + (E hoặc F) trùng, nhưng ở đây chỉ cần điều kiện (E hoặc F) trùng là đã báo, tất nhiên trong thực tế không thể có việc trùng số CMND hoặc số GPLX, nhưng như đã trao đổi với bác ở bài trên form này được tách ra từ MultiPage nên nó còn liên quan đến việc sử lý dữ liệu ở các form khác, do vậy bắt buộc nó phải có yêu cầu đó, mong bác thông cảm và cố gắng giúp đỡ.
3. Trong trường hợp này sử dụng điều khiển If hoặc Select Case có khả thi không bác? tôi đã thử ghi Macro xem nó làm việc ra sao để mà vận dụng nhưng do trình độ VBA của tôi còn hạn chế nên cái vụ này vẫn chưa ổn.
4. Vì điều kiện cho phép nhập trùng dữ liệu tại 2 cột C & D nên có lẽ phải thêm một nút lệnh sửa nữa phải không bác, nếu để 1 nút vừa ghi vừa sửa thì khi sửa dữ liệu chắc sẽ gặp lỗi.
Rất mong sự quan tâm giúp đỡ của bác Let'GâuGâu cũng như của các Thầy và các anh chị trên diễn đàn. Trân trọng cám ơn

bạn mở file test form thử, mình nghĩ nếu bạn dùng hàm Countifs thì có thể làm được.

Link: https://www.mediafire.com/?g2b7sdhenc5el91
 
Lần chỉnh sửa cuối:
Upvote 0
bạn mở file test form thử, mình nghĩ nếu bạn dùng hàm Countifs thì có thể làm được.
Cám ơn bác phucbugis đã giúp đỡ, tôi text thử gặp phải vấn đề là nếu trùng dữ liệu tại cột C (cột mã) là báo stop không cho nhập tiếp dù nhập số CMND khác cũng không được bác ạ. Bác bớt chút thời gian kiểm tra lại giúp, tôi đã thử vô hiệu đoạn code kiểm tra mã nhưng vẫn không được.
Vâng đúng như ý của bác có lẽ sử dụng hàm Countifs có thể được,tôi đã xem code bác viết rất gọn, thoả mãn yêu cầu điều kiện. Một lần nữa cám ơn bác
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn bác phucbugis đã giúp đỡ, tôi text thử gặp phải vấn đề là nếu trùng dữ liệu tại cột C (cột mã) là báo stop không cho nhập tiếp dù nhập số CMND khác cũng không được bác ạ. Bác bớt chút thời gian kiểm tra lại giúp, tôi đã thử vô hiệu đoạn code kiểm tra mã nhưng vẫn không được. Một lần nữa cám ơn bác!

mình chỉ cài thêm code để kiểm tra việc trùng 3 cột đó thôi, bạn bỏ 2 đoạn
Mã:
MsgBox ("stop")
Exit Sub
ra và ráp với code gốc của bạn là được mà :-=
 
Upvote 0
Cám ơn bác phucbugis! về cơ bản bác sử dụng hàm countifs rất hay, qua đây tôi cũng học được cách viết code của bác, tôi vẫn đang chạy thử. Một lần nữa cám ơn bác rất nhiều. Trân trọng
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn bác phucbugis! về cơ bản bác sử dụng hàm countifs rất hay, qua đây tôi cũng học được cách viết code của bác, tôi vẫn đang chạy thử. Một lần nữa cám ơn bác rất nhiều. Trân trọng

với phương thức find thì như vậy
Mã:
Private Sub txt2_Change()
Dim found As Range
Set found = Sheet1.[e1].Resize(Sheet1.[a1000].End(3).Row).Find(txt2.Value, , , xlWhole)
If Not found Is Nothing And found.Offset(, -1) = txt1.Value And found.Offset(, -2) = cboMa.Value Then
   MsgBox "Da Co Du Lieu Nay"
End If
End Sub

tôi thấy bạn nên tìm hiểu ở topic này, khi bạn gõ từ vào thì nó mới tạo list cho combobox
ví dụ bạn gõ N thì nó hiện list những người bắt đầu bằng chữ N
http://www.giaiphapexcel.com/forum/showthread.php?72633-Hỏi-cách-tạo-combo-box-thông-minh
 
Upvote 0
Xin chào mọi người
Mình rất thích vba trong excell, mình thấy trên mạng thường có các đoạn code, nhưng minh không biết làm sao để đưa vào file excell
đặc biệc excell 2007, một số file exel 2003 có VBA của mình giờ không chạy được
Mong các bạn giúp đỡ nhé
 
Upvote 0
Xin chào mọi người
Mình rất thích vba trong excell, mình thấy trên mạng thường có các đoạn code, nhưng minh không biết làm sao để đưa vào file excell
đặc biệc excell 2007, một số file exel 2003 có VBA của mình giờ không chạy được
Mong các bạn giúp đỡ nhé
Có thể bạn chưa mở Tab Developer. Bạn vào Excel Options > Popular > Show Developer tab in the Ribbon.
Phím tắt để vào cửa sổ VBA: Atl+F11
Bạn chú ý: Khi hỏi một vấn đề mới thì mở Topic mới, đừng viết chen ngang hoặc không liên quan đến chủ đề hiện tại.
Nhờ Mod chuyển vào Hỏi nhanh Đáp nhanh dùm, cảm ơn!
 
Upvote 0
Cám ơn bác phucbugis! về cơ bản bác sử dụng hàm countifs rất hay, qua đây tôi cũng học được cách viết code của bác, tôi vẫn đang chạy thử. Một lần nữa cám ơn bác rất nhiều. Trân trọng

chiều tới giờ ko vào diễn đàn được.............bùn quá,,,,,,,,,,,,đem bài của bạn ra làm thử,
gởi bạn tham khảo thêm
 

File đính kèm

Upvote 0
tôi thấy bạn nên tìm hiểu ở topic này, khi bạn gõ từ vào thì nó mới tạo list cho combobox
ví dụ bạn gõ N thì nó hiện list những người bắt đầu bằng chữ N
http://www.giaiphapexcel.com/forum/s...h%C3%B4ng-minh
Cám ơn bác Let'GâuGâu đã quan tâm giúp đỡ. Tôi sẽ tìm hiểu thêm về gợi ý của bác, và tôi sẽ chạy thử code của bác để học tập, trong quá trình hoàn thiện chương trình nếu có vướng mắc gì rất mong sự chỉ giáo của bác. Một lần nữa cám ơn bác và cũng nhân ngày 8/3 gửi tới bác gái cùng những người thân của bác những lời chúc tốt đẹp nhất, chúc bác cùng gia đình luôn mạnh khoẻ, hạnh phúc và có rất rất nhiều niềm vui. Trân trọng
 
Upvote 0
chiều tới giờ ko vào diễn đàn được.............bùn quá,,,,,,,,,,,,đem bài của bạn ra làm thử,
gởi bạn tham khảo thêm
Rất tuyệt vời bác ạ, chạy êm ru chỉ còn lỗi không có dữ liệu mà nhấn ghi thì nó vẫn ghi và vẫn đánh số thứ tự thôi, cái này em sử lý được, bác giúp em chuyện lớn là tốt quá rồi, công bằng mà nói các đại cao thủ trên diễn đàn GPE kiến thức mênh mông thật...mỗi người mỗi vẻ nhưng có một điểm chung là cực kỳ uyên bác... xin bái phục!
Chào bác! lại phải phiền bác xem giúp em, em nhập thêm 1 số dữ liệu nữa thì lại phát sinh lỗi như sau:
Nếu nhập tên người và địa chỉ trùng với người đã có trong dữ liệu và tiếp theo nhập số CMND thì mới nhập 1 số đầu nó đã lên cả dãy số, Msgbox hỏi sửa chữa nếu No thì thoát luôn, nếu yes thì nó coi là sửa chứ không cho nhập mới (có thể số mới nhập khác số cũ 1 con số cuối cùng VD 123 & 124 thì vẫn phải coi là nhập mới chứ không phải sửa), như vậy ở đây điều kiện trùng cả 3 cột không thoả mà vẫn không nhập được. Bác kiểm tra giúp em và sử lý giúp: khi Msgbox hỏi "bạn sửa dữ liệu cũ " nếu yes thì cho sửa, nếu No thì là nhập mã mới và nếu nhập trùng cả dãy số thì mới báo lỗi dữ liệu trùng, và khi nhập phải gõ đủ dãy số thì mới hỏi (ví dụ: số 123456 -thì phải nhập đến số 6 mới thông báo nhập trùng dữ liệu, bac lưu ý giúp sau khi nhập số cuối cùng nhưng phải nhấn Enter mới thông báo, tránh trường hợp số nhập sau nhiều hơn dãy số trước 1 số chưa nhập xong đã báo,thực tế số CMND có thể thay đổi từ 9 số sang 10 số, bởi như trên em đã nói có thể số cũ và số mới chỉ khác nhau ở con số cuối cùng). Rất mong bác quan tâm giúp đỡ. Trân trọng
 
Lần chỉnh sửa cuối:
Upvote 0
Rất tuyệt vời bác ạ, chạy êm ru chỉ còn lỗi không có dữ liệu mà nhấn ghi thì nó vẫn ghi và vẫn đánh số thứ tự thôi, cái này em sử lý được, bác giúp em chuyện lớn là tốt quá rồi, công bằng mà nói các đại cao thủ trên diễn đàn GPE kiến thức mênh mông thật...mỗi người mỗi vẻ nhưng có một điểm chung là cực kỳ uyên bác... xin bái phục!
Chào bác! lại phải phiền bác xem giúp em, em nhập thêm 1 số dữ liệu nữa thì lại phát sinh lỗi như sau:
Nếu nhập tên người và địa chỉ trùng với người đã có trong dữ liệu và tiếp theo nhập số CMND thì mới nhập 1 số đầu nó đã lên cả dãy số, Msgbox hỏi sửa chữa nếu No thì thoát luôn, nếu yes thì nó coi là sửa chứ không cho nhập mới (có thể số mới nhập khác số cũ 1 con số cuối cùng VD 123 & 124 thì vẫn phải coi là nhập mới chứ không phải sửa), như vậy ở đây điều kiện trùng cả 3 cột không thoả mà vẫn không nhập được. Bác kiểm tra giúp em và sử lý giúp: khi Msgbox hỏi "bạn sửa dữ liệu cũ " nếu yes thì cho sửa, nếu No thì là nhập mã mới và nếu nhập trùng cả dãy số thì mới báo lỗi dữ liệu trùng, và khi nhập phải gõ đủ dãy số thì mới hỏi (ví dụ: số 123456 -thì phải nhập đến số 6 mới thông báo nhập trùng dữ liệu, bac lưu ý giúp sau khi nhập số cuối cùng nhưng phải nhấn Enter mới thông báo, tránh trường hợp số nhập sau nhiều hơn dãy số trước 1 số chưa nhập xong đã báo,thực tế số CMND có thể thay đổi từ 9 số sang 10 số, bởi như trên em đã nói có thể số cũ và số mới chỉ khác nhau ở con số cuối cùng). Rất mong bác quan tâm giúp đỡ. Trân trọng

không cần sửa code, bạn vào set lại property của combobox là được rồi.
vào cửa sổ vba--->chọn form-->nhấp chọn "cboCMND"--->chọn property trên thanh công cụ--->chọn MatchEntry--->chọn 2-fmMatchEntryNone.
làm tương tự cho cái combo giấy phép lái xe
 
Upvote 0
minh can ban giup ban cho minh mail dc khong

mình cần bạn giúp mình viết đoạn code bằng VB để quét mã vạch nếu trùng thì không cho nhập và lưu tự động được không
 
Upvote 0
Web KT

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

Back
Top Bottom