Bảo vệ dữ liệu đã nhập trong file Excell.

Liên hệ QC
Mình có áp dụng như thế này nhưng bị báo lỗi
Mã:
If .Cells(i, j).Value <> Empty Or .Cells(i, j).IsFormula = True Then
Bạn phải làm như thế này mà.
Mã:
If .Cells(i, j).Value <> Empty Or Application.IsFormula(.Cells(i, j)) = True Then
 
Nếu mà toàn bộ trang tính thì code nó sẽ lâu nên mình để 6000 dòng và 55 cột.Bạn có thể vào xem code và sửa ở trong đó.

Cái này bạn vào code sửa chọn thêm các sheets thôi.Ví dụ dùng vòng lặp For next chạy từ sheet1 đến sheets 4 là được mà.
Snow205

Cảm ơn bạn rất nhiều. Mính đã sửa Code đc rồi.
Tuy nhiên có 1 vấn đề, đó là các dữ liệu khác số 0 thì bảo vệ đưuọc, còn dữ liệu là số 0 thì ko được bảo vệ, vẫn có thể thay đổi.
Vậy trong mã Code có sửa đc không?
Giúp mình với!
 

File đính kèm

  • Quản lí sản xuất 320 092019 Ver1.2.xlsm
    2.7 MB · Đọc: 2
Snow205

Cảm ơn bạn rất nhiều. Mính đã sửa Code đc rồi.
Tuy nhiên có 1 vấn đề, đó là các dữ liệu khác số 0 thì bảo vệ đưuọc, còn dữ liệu là số 0 thì ko được bảo vệ, vẫn có thể thay đổi.
Vậy trong mã Code có sửa đc không?
Giúp mình với!
Bạn sửa.
Mã:
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
       Dim i As Long, j As Long, arr
       With Sheet1
            Application.Calculation = xlCalculationManual
            arr = .Range("A1").Resize(26000, 155).Value
            .Unprotect 123
            For i = 4 To 26000
                For j = 1 To 155
                    If Not IsError(arr(i, j)) Then
                    If Len(arr(i, j)) Then
                       .Cells(i, j).Locked = True
                    End If
                    End If
                Next j
           Next i
           .Protect 123
           Application.Calculation = xlCalculationAutomatic
      End With
End Sub
 
Bạn sửa.
Mã:
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
       Dim i As Long, j As Long, arr
       With Sheet1
            Application.Calculation = xlCalculationManual
            arr = .Range("A1").Resize(26000, 155).Value
            .Unprotect 123
            For i = 4 To 26000
                For j = 1 To 155
                    If Not IsError(arr(i, j)) Then
                    If Len(arr(i, j)) Then
                       .Cells(i, j).Locked = True
                    End If
                    End If
                Next j
           Next i
           .Protect 123
           Application.Calculation = xlCalculationAutomatic
      End With
End Sub
Snow25

Dữ liệu đã đưuọc bảo vệ thành công!

Đa tạ sư phụ!
 
Bạn sửa.
Mã:
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
       Dim i As Long, j As Long, arr
       With Sheet1
            Application.Calculation = xlCalculationManual
            arr = .Range("A1").Resize(26000, 155).Value
            .Unprotect 123
            For i = 4 To 26000
                For j = 1 To 155
                    If Not IsError(arr(i, j)) Then
                    If Len(arr(i, j)) Then
                       .Cells(i, j).Locked = True
                    End If
                    End If
                Next j
           Next i
           .Protect 123
           Application.Calculation = xlCalculationAutomatic
      End With
End Sub
Thân gửi Snow25!

Tình hình là như này, khi khóa thì chức năng Use AutoFilter: bị khóa.
Vậy trong Code mình có thể thêm vào để dùng chức năng Use AutoFilter: được không?
Rất mong nhận được sự giúp đỡ!
 

File đính kèm

  • Quản lí sản xuất 320 092019 Ver1.2.xlsm
    2.3 MB · Đọc: 2
Khi khóa sheet bạn chọn "Use Autofilter" như hình nhe::
filter.png
 
Bạn xem file, lọc theo người làm"HOÀNG"
 

File đính kèm

  • Quản lí sản xuất 320 092019 Ver1.2.xlsm
    2.3 MB · Đọc: 6
Lần chỉnh sửa cuối:
Snow25 ơi,thêm 1 vấn đề này nữa:
Mình có thể tạo Code để người dùng chỉ có thể nhập giá trị ngày tháng năm của tháng hiện tại . Còn những tháng đã qua và chưa đến thì không được nhập vào. Cái đó bạn tạo Code được không?

ví dụ: bây giờ là tháng 12/2019, thì chỉ nhập được các ngày của tháng 12/2019. Còn lại các tnags 11/2019 trở về trước và 1/2020 trở đi không nhập vào được.
 
Snow25 ơi,thêm 1 vấn đề này nữa:
Mình có thể tạo Code để người dùng chỉ có thể nhập giá trị ngày tháng năm của tháng hiện tại . Còn những tháng đã qua và chưa đến thì không được nhập vào. Cái đó bạn tạo Code được không?

ví dụ: bây giờ là tháng 12/2019, thì chỉ nhập được các ngày của tháng 12/2019. Còn lại các tnags 11/2019 trở về trước và 1/2020 trở đi không nhập vào được.
Nhập vào cột nào và sheets nào vậy.
 
Web KT
Back
Top Bottom