Code Cảnh báo trùng dữ liệu VBA !!!1

Liên hệ QC

anhtuan260186

Thành viên mới
Tham gia
31/10/17
Bài viết
8
Được thích
0
Giới tính
Nữ
Hi các bác,
Em dùng Excel VBA
Em có 1 form nhập dữ liệu gồm các trường: CMND, Họ tên, SĐT...
Em muốn khi nhập 1 CMND bất kỳ, nếu chưa có CMND thì bỏ qua, còn nếu CMND đó đã được nhập trước đó rồi thì không cho nhập nữa mà sẽ hiển thị thông báo "CMND đã tồn tại"
Các bác giúp em với.
Thanks!
 

File đính kèm

  • Trùng CMND.xlsb
    22.5 KB · Đọc: 18
Hi các bác,
Em dùng Excel VBA
Em có 1 form nhập dữ liệu gồm các trường: CMND, Họ tên, SĐT...
Em muốn khi nhập 1 CMND bất kỳ, nếu chưa có CMND thì bỏ qua, còn nếu CMND đó đã được nhập trước đó rồi thì không cho nhập nữa mà sẽ hiển thị thông báo "CMND đã tồn tại"
Các bác giúp em với.
Thanks!
Tham khảo tại đây xem sao.
 
Upvote 0
Ý của #2 là nói bạn vi phạm nội quy đó, không được mở 2 chủ đề trùng nhau. Do bạn là thành viên mới nên tôi giúp, lần sau sẽ không được giúp nửa nghe.
Mã:
Private Sub cmdAdd_Click()
     'Tìm dòng cuoi cùng có du lieu trong cot A
        Dim lastrow As Long
    
        lastrow = Sheet1.Cells(Rows.Count, "B").End(xlUp).Row + 1
        If Application.WorksheetFunction.CountIf(Sheet1.Range("C10:C" & lastrow), txtSoCMND.Text) = 0 Then
            With Sheet1
               .Range("A" & lastrow).Value = Application.Max(.Range("A10:A" & lastrow)) + 1
               .Range("B" & lastrow) = txtHovaten.Text
               .Range("C" & lastrow) = "'" & txtSoCMND.Text
            End With
            Call cmdRefesh_Click
        Else
            MsgBox "So CMND da ton tai de nghi nhap lai", vbCritical, "---GPE---"
        End If
End Sub
 
Upvote 0
Ý của #2 là nói bạn vi phạm nội quy đó, không được mở 2 chủ đề trùng nhau. Do bạn là thành viên mới nên tôi giúp, lần sau sẽ không được giúp nửa nghe.
Mã:
Private Sub cmdAdd_Click()
     'Tìm dòng cuoi cùng có du lieu trong cot A
        Dim lastrow As Long
    
        lastrow = Sheet1.Cells(Rows.Count, "B").End(xlUp).Row + 1
        If Application.WorksheetFunction.CountIf(Sheet1.Range("C10:C" & lastrow), txtSoCMND.Text) = 0 Then
            With Sheet1
               .Range("A" & lastrow).Value = Application.Max(.Range("A10:A" & lastrow)) + 1
               .Range("B" & lastrow) = txtHovaten.Text
               .Range("C" & lastrow) = "'" & txtSoCMND.Text
            End With
            Call cmdRefesh_Click
        Else
            MsgBox "So CMND da ton tai de nghi nhap lai", vbCritical, "---GPE---"
        End If
End Sub
Không dùng công thức được không anh.
 
Upvote 0
Ý của #2 là nói bạn vi phạm nội quy đó, không được mở 2 chủ đề trùng nhau. Do bạn là thành viên mới nên tôi giúp, lần sau sẽ không được giúp nửa nghe.
Mã:
Private Sub cmdAdd_Click()
     'Tìm dòng cuoi cùng có du lieu trong cot A
        Dim lastrow As Long
   
        lastrow = Sheet1.Cells(Rows.Count, "B").End(xlUp).Row + 1
        If Application.WorksheetFunction.CountIf(Sheet1.Range("C10:C" & lastrow), txtSoCMND.Text) = 0 Then
            With Sheet1
               .Range("A" & lastrow).Value = Application.Max(.Range("A10:A" & lastrow)) + 1
               .Range("B" & lastrow) = txtHovaten.Text
               .Range("C" & lastrow) = "'" & txtSoCMND.Text
            End With
            Call cmdRefesh_Click
        Else
            MsgBox "So CMND da ton tai de nghi nhap lai", vbCritical, "---GPE---"
        End If
End Sub
rất xin lỗi bác vì em không rõ nội quy ạ
Bài đã được tự động gộp:

cho em hỏi chút, em không nhập gì trong textbox CMND vẫn bị báo lỗi đã tồn tại
 
Lần chỉnh sửa cuối:
Upvote 0
rất xin lỗi bác vì em không rõ nội quy ạ
Bài đã được tự động gộp:

cho em hỏi chút, em không nhập gì trong textbox CMND vẫn bị báo lỗi đã tồn tại
Nhưng ý bạn là nếu không nhập CMND thì có ghi dữ liệu vào sheet hay không? Thử thế này sao đó tùy biến bạn nhé.
Mã:
Private Sub cmdAdd_Click()
    
     'Tìm dòng cuoi cùng có du lieu trong cot A
        Dim lastrow As Long
        If (txtSoCMND = vbNullString) Then Exit Sub
        lastrow = Sheet1.Cells(Rows.Count, "B").End(xlUp).Row + 1
        If (Application.WorksheetFunction.CountIf(Sheet1.Range("C10:C" & lastrow), txtSoCMND.Text) = 0) And (txtSoCMND <> vbNullString) Then
            With Sheet1
               .Range("A" & lastrow).Value = Application.Max(.Range("A10:A" & lastrow)) + 1
               .Range("B" & lastrow) = txtHovaten.Text
               .Range("C" & lastrow) = "'" & txtSoCMND.Text
            End With
            Call cmdRefesh_Click
        Else
            MsgBox "So CMND da ton tai de nghi nhap lai", vbCritical, "---GPE---"
        End If
End Sub
 
Upvote 0
Nhưng ý bạn là nếu không nhập CMND thì có ghi dữ liệu vào sheet hay không? Thử thế này sao đó tùy biến bạn nhé.
Mã:
Private Sub cmdAdd_Click()
   
     'Tìm dòng cuoi cùng có du lieu trong cot A
        Dim lastrow As Long
        If (txtSoCMND = vbNullString) Then Exit Sub
        lastrow = Sheet1.Cells(Rows.Count, "B").End(xlUp).Row + 1
        If (Application.WorksheetFunction.CountIf(Sheet1.Range("C10:C" & lastrow), txtSoCMND.Text) = 0) And (txtSoCMND <> vbNullString) Then
            With Sheet1
               .Range("A" & lastrow).Value = Application.Max(.Range("A10:A" & lastrow)) + 1
               .Range("B" & lastrow) = txtHovaten.Text
               .Range("C" & lastrow) = "'" & txtSoCMND.Text
            End With
            Call cmdRefesh_Click
        Else
            MsgBox "So CMND da ton tai de nghi nhap lai", vbCritical, "---GPE---"
        End If
End Sub
nếu chưa nhập textbox CMND vẫn cho nhập và không báo lỗi trùng CMND ạ, chỉ tính lỗi khi ô sheet đó có giá trị
 
Upvote 0
nếu chưa nhập textbox CMND vẫn cho nhập và không báo lỗi trùng CMND ạ, chỉ tính lỗi khi ô sheet đó có giá trị
Vậy mà cũng không biết sửa nửa hả?
Mã:
Private Sub cmdAdd_Click()
     'Tìm dòng cuoi cùng có du lieu trong cot A
        Dim lastrow As Long
        lastrow = Sheet1.Cells(Rows.Count, "B").End(xlUp).Row + 1
        If (Application.WorksheetFunction.CountIf(Sheet1.Range("C10:C" & lastrow), txtSoCMND.Text) = 0) Or (txtSoCMND = vbNullString) Then
            With Sheet1
               .Range("A" & lastrow).Value = Application.Max(.Range("A10:A" & lastrow)) + 1
               .Range("B" & lastrow) = txtHovaten.Text
               .Range("C" & lastrow) = "'" & txtSoCMND.Text
            End With
            Call cmdRefesh_Click
        Else
            MsgBox "So CMND da ton tai de nghi nhap lai", vbCritical, "---GPE---"
        End If
End Sub
[code]
 
Upvote 0
Vậy mà cũng không biết sửa nửa hả?
Mã:
Private Sub cmdAdd_Click()
     'Tìm dòng cuoi cùng có du lieu trong cot A
        Dim lastrow As Long
        lastrow = Sheet1.Cells(Rows.Count, "B").End(xlUp).Row + 1
        If (Application.WorksheetFunction.CountIf(Sheet1.Range("C10:C" & lastrow), txtSoCMND.Text) = 0) Or (txtSoCMND = vbNullString) Then
            With Sheet1
               .Range("A" & lastrow).Value = Application.Max(.Range("A10:A" & lastrow)) + 1
               .Range("B" & lastrow) = txtHovaten.Text
               .Range("C" & lastrow) = "'" & txtSoCMND.Text
            End With
            Call cmdRefesh_Click
        Else
            MsgBox "So CMND da ton tai de nghi nhap lai", vbCritical, "---GPE---"
        End If
End Sub
[code]
cảm ơn bác đã giúp đỡ
 
Upvote 0
Web KT
Back
Top Bottom