Như thế thì không tương tác nhập liệu tốt. Bạn nên dùng Add-in A-Tools với chức năng phê duyệt. Dòng dữ liệu nào đã được phê duyệt rồi thì dòng đó không được sửa, xóa nữaTôi tạo dữ liệu trong worksheet và muốn hỏi các bạn: làm thế nào vô hiệu hóa lệnh copy và paste dữ liệu trong các ô của worksheet đó nhưng vẫn có thể sửa, nhập mới... Nghĩa là worksheet này chỉ nhập mới, sửa dữ liệu vào các ô mà không cho copy dữ liệu của 1 ô để paste vào ô khác.
Bạn tạo sẵn mã mới đi: VD ở cột A tạo mã NV0001 tới mã NV0999 chẳng hạn, rồi dùng chức năng khóa vùng dữ liệu đó, nhân viên nhập dữ liệu nhân viên mới chỉ thêm các thông tin còn lại ứng với từng mã thôi, như vậy đảm bảo không thể có chuyện trùng mã.Vấn đề của tôi thế này: Tôi tạo worksheet danh sách nhân viên theo mã (Nhân viên Cty tôi ra vào y như bến tàu xe vậy, cỡ ngàn/năm). Ở cột mã nhân viên tôi sử dụng hàm không cho nhập dữ liệu trùng. Oái ăm là hàm này nó chỉ không cho nhập trùng từ bàn phím, còn copy dữ liệu đã có và paste thì vô tư, do đó mã nhân viên vẫn trùng nên trở thành vô nghĩa. Do đó tôi mới có câu hỏi trên.
Vậy bạn có thể tham khảo đoạn VBA EVents sau:Vấn đề của tôi thế này: Tôi tạo worksheet danh sách nhân viên theo mã (Nhân viên Cty tôi ra vào y như bến tàu xe vậy, cỡ ngàn/năm). Ở cột mã nhân viên tôi sử dụng hàm không cho nhập dữ liệu trùng. Oái ăm là hàm này nó chỉ không cho nhập trùng từ bàn phím, còn copy dữ liệu đã có và paste thì vô tư, do đó mã nhân viên vẫn trùng nên trở thành vô nghĩa. Do đó tôi mới có câu hỏi trên.
Option Explicit
Public d As Long
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Set Sh = ThisWorkbook.Sheets("Sheet1")
d = Sh.Range("A" & Sh.Rows.Count).End(xlUp).Row
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim i&
Set Sh = ThisWorkbook.Sheets("Sheet1")
For i = 1 To d
If Target.Value = Sh.Cells(i, 1).Value And Target.Column = 1 Then
Target.ClearContents
MsgBox "Ban da nhap ma trung"
Exit For
End If
Next i
End Sub
Giải pháp của bạn là gì?Thx các bạn đã nhiệt tình giúp đỡ!