Không cho nhập trùng dữ liệu trong form vba

Liên hệ QC

tuấnnèk

Thành viên mới
Tham gia
16/9/20
Bài viết
8
Được thích
0
Mọi người có ai biết cách không cho nhập trùng dữ liệu trong form vba không vậy giúp mình với:(
 
Mọi người có ai biết cách không cho nhập trùng dữ liệu trong form vba không vậy giúp mình với:(
Bạn nên thiết lập 1 file giả lập, mô tả nội dung thường dùng để nhập, xác định khi nào thì bắt đầu đối chiếu trùng (so sánh ngay ký tự đầu tiên?).
Phương thức Find là 1 giải pháp khả thi.
 
Upvote 0
Mọi người có ai biết cách không cho nhập trùng dữ liệu trong form vba không vậy . . . .
Không cho nhập trùng trên Form hay trên trang tính vậy bạn, theo mình đoán là trên trang tính?
Vậy dữ liệu nhập sẽ là chuỗi hay số hay kiểu gì khác?
:D
 
Upvote 0
Không cho nhập trùng trên Form hay trên trang tính vậy bạn, theo mình đoán là trên trang tính?
Vậy dữ liệu nhập sẽ là chuỗi hay số hay kiểu gì khác?
:D
thank bn nha mik mới dạo 1 vòng thì viết dc code này

  1. Dim LastCell As Range

  2. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  3. On Error Resume Next
  4. Application.ScreenUpdating = False
  5. Cells(1) = "=COUNTIF(a2:z1000," & LastCell.Address & ")"
  6. If Cells(1) = 0 Then GoTo thoat
  7. If Not LastCell Is Nothing And Cells(1) > 1 And LastCell <> "" Then
  8. MsgBox "Nhap trung"
  9. LastCell.ClearContents
  10. Beep
  11. End If
  12. thoat:
  13. Set LastCell = ActiveCell
  14. End Sub
xài cũng ổn lắm theo ý kiến của bn như này dc hk
 
Upvote 0
thank bn nha mik mới dạo 1 vòng thì viết dc code này

  1. Dim LastCell As Range

  2. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  3. On Error Resume Next
  4. Application.ScreenUpdating = False
  5. Cells(1) = "=COUNTIF(a2:z1000," & LastCell.Address & ")"
  6. If Cells(1) = 0 Then GoTo thoat
  7. If Not LastCell Is Nothing And Cells(1) > 1 And LastCell <> "" Then
  8. MsgBox "Nhap trung"
  9. LastCell.ClearContents
  10. Beep
  11. End If
  12. thoat:
  13. Set LastCell = ActiveCell
  14. End Sub
xài cũng ổn lắm theo ý kiến của bn như này dc hk
Góp ý: Bạn nên gõ Tiếng Việt đầy đủ dấu, nhằm diễn giải rõ ràng cũng như tôn trọng người đọc. Bạn mới tham gia có thể không biết, thành viên mà bạn vừa trả lời đã hơn 70 tuổi, bác ấy cũng như nhiều thành viên khác rất "ngại" những bài viết được viết tắt như vậy.

Bạn hỏi nhập trùng trong Form nhưng viết code sự kiện trên Sheet? Như thế phù hợp không?
 
Upvote 0
Góp ý: Bạn nên gõ Tiếng Việt đầy đủ dấu, nhằm diễn giải rõ ràng cũng như tôn trọng người đọc. Bạn mới tham gia có thể không biết, thành viên mà bạn vừa trả lời đã hơn 70 tuổi, bác ấy cũng như nhiều thành viên khác rất "ngại" những bài viết được viết tắt như vậy.
Bạn hỏi nhập trùng trong Form nhưng viết code sự kiện trên Sheet? Như thế phù hợp không?
xin lỗi vì chưa nắm rõ những quy tắt ở đây tôi sẽ cố gắng khắc phục.

vậy bạn có thể giúp tôi viết code nhập trùng trên form được không?
xin cảm ơn góp ý của bạn!
 
Upvote 0
xin lỗi vì chưa nắm rõ những quy tắt ở đây tôi sẽ cố gắng khắc phục.

vậy bạn có thể giúp tôi viết code nhập trùng trên form được không?
xin cảm ơn góp ý của bạn!
Tham khảo: tạo UserForm có TextBox1, code trong UserForm như sau
Mã:
Private Sub TextBox1_Change()
Dim Rng As Range, xFnd As Range
Set Rng = Sheet1.Range("A:A")
If Len(TextBox1.Value) > 0 Then
    Set xFnd = Rng.Find(TextBox1.Value, , , 1, , , 1)
    If Not xFnd Is Nothing Then
        MsgBox "Nhâp trùng"
        TextBox1.Value = Null
    End If
End If
End Sub
 
Upvote 0
Tham khảo: tạo UserForm có TextBox1, code trong UserForm như sau
Mã:
Private Sub TextBox1_Change()
Dim Rng As Range, xFnd As Range, Lr As Long
Set Rng = Sheet1.Range("A:A")
If Len(TextBox1.Value) > 0 Then
    Set xFnd = Rng.Find(TextBox1.Value, , , 1, , , 1)
    If Not xFnd Is Nothing Then
        MsgBox "Nhâp trùng"
        TextBox1.Value = Null
    End If
End If
End Sub
Cái này sẽ khó đúng, nếu ta cần tìm để phát hiện ngày trùng trong 1 cột ('A')
 
Upvote 0
Nếu không phải kiểu dữ liệu Ngày-Tháng-Năm thì làm theo cách của bạn leonguyenz bảo

Còn là dữ liệu ngày-tháng-năm thì đưa giả lập lên, sẽ cùng tìm ra cách thích hợp.
 
Upvote 0
Textbox luôn luôn là text dù cho gõ vào ngày tháng. Nếu textbox1 là ngày tháng có dạng bất kỳ (dd/mm/yy, mm/dd/yy, dd/mm/yyyy), thì phải dùng hàm chuyển đổi từ text sang date. Tốt nhất là dùng hàm DateSerial kết hợp Left, Mid, Right

Tham khảo: tạo UserForm có TextBox1, code trong UserForm như sau
Mã:
Private Sub TextBox1_Change()
...
End Sub
Không nên dùng sự kiện Change vì cứ hẽ gõ 1 ký tự hay xoá 1 ký tự là code chạy. Hãy sử dụng sự kiện Exit hoặc tốt nhất là BeforeUpdate. Lý do BeforeUpdate có tham số Cancel, nếu sai thì gán Cancel = True và bắt sửa
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom