Code VBA cho phép nhập, format, nhưng không cho xóa dữ liệu

Liên hệ QC

nguyendinhtutw

Thành viên chính thức
Tham gia
17/4/17
Bài viết
73
Được thích
3
Giới tính
Nam
Dear các bác,
Em có một file excel, bây giờ em muốn protect 1 column (column D chẳng hạn) trong đó cho phép người khác nhập dữ liệu, format dữ liệu trong cột đó, nhưng sau đó không xóa được dữ liệu đã nhập thì có code nào làm được việc này không ạ?
Cảm ơn các bác.
 
Được. ..chứ sao không. Nhập xong copy vào USB và mua két sắt, bỏ vào & khóa. Quăng chìa khóa xuống sông "Sài Gòn"...
Em có tìm được file này trên mạng, tuy nhiên họ đang áp dụng cho toàn bộ sheet chứ không phải một vùng dữ liệu nào cả
 

File đính kèm

  • CHI CHO NHAP KHONG CHO XOA.xls
    30 KB · Đọc: 142
Upvote 0
Cho phép mình đào mộ xíu :D
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim AA9 As Range
    ActiveSheet.Unprotect "GPE"
    For Each Cll In Range("AA9:AA200")
        AA9.Locked = (AA9 <> "")
    Next
    ActiveSheet.Protect "GPE"
End Sub
Khi mình chạy code này thì các data thuộc range ok, bị khóa ko thể xóa chỉ thể có thể nhập. Nhưng ngoài vùng data đó thì có một số cột bị hide mất công thức, một số cột ko mất. Mọi người hướng dẫn với được ko?
 
Upvote 0
Cho phép mình đào mộ xíu :D
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim AA9 As Range
    ActiveSheet.Unprotect "GPE"
    For Each Cll In Range("AA9:AA200")
        AA9.Locked = (AA9 <> "")
    Next
    ActiveSheet.Protect "GPE"
End Sub
Khi mình chạy code này thì các data thuộc range ok, bị khóa ko thể xóa chỉ thể có thể nhập. Nhưng ngoài vùng data đó thì có một số cột bị hide mất công thức, một số cột ko mất. Mọi người hướng dẫn với được ko?
Thì bạn thay code cũ bằng code #4 của bạn hpkhuong rồi tuy biến lại đoạn code đỏ đỏ sau
For Each Cll In Range("B1:E22") thành For Each Cll In Range("AA9:AA200") xem sao
 
Upvote 0
Thì bạn thay code cũ bằng code #4 của bạn hpkhuong rồi tuy biến lại đoạn code đỏ đỏ sau
For Each Cll In Range("B1:E22") thành For Each Cll In Range("AA9:AA200") xem sao
C11 đây là shell tại ô mà nên phải thay đổi theo vùng chọn chứ bạn??? Code bên dưới là mình đã tùy biến cho đúng rồi nhưng ko hiểu sao lại lỗi
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A9 As Range
    ActiveSheet.Unprotect "tnTcnt@123"
    For Each A9 In Range("AA9:AA200")
        A9.Locked = (A9 <> "")
    Next
    ActiveSheet.Protect "tnTcnt@123"
End Sub
Mình đã hiểu, những số liệu liên quan đến vùng lock sẽ bị hide luôn công thức. :(
 
Upvote 0
Web KT

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

Back
Top Bottom