Giúp sửa code Protect sheet để sử dụng Autofilter

Liên hệ QC

Cao Mạnh Sơn

Tôi đồng ý
Tham gia
26/11/07
Bài viết
568
Được thích
586
Đính kèm là 1 file có chứa đoạn code Protect Sheet mà tôi sưu tầm trong diễn đàn.Sau khi nhập dữ liệu và Save lại thì tự động dữ liệu được bảo vệ không cho sửa nữa.Muốn sửa dữ liệu phải UnPotect Sheet,Pas trong File.
Vấn đề là sau khi Sheet được tự động Save thì tính năng AutoFilter không sử dụng được.
Nhờ mọi người sửa giúp đoạn code trong file để sau khi Protect Sheet vẫn sử dụng được AutoFilter.
Xin cám ơn
 

File đính kèm

Lần chỉnh sửa cuối:
Anh sửa lại một chút như sau:
PHP:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
........
    Sheets(sh).Protect "NHI"
...........
End Sub

Thành:
PHP:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
........
    Sheets(sh).Protect Password:="NHI", AllowFiltering:=True
...........
End Sub
 
Upvote 0
Các bạn giúp mình việc này nữa nhé.
Workbook có nhiều Sheet,các Sheet được Link với nhau thông qua 1 Menu có tên các Sheet.Bây giờ mình muốn sau khi Save File chỉ có những Sheet nào mình muốn bảo vệ thì mới tự động protect(giả sử Sheet A và Sheet B),các Sheet khác thì không,đồng thời các Link ở menu vẫn hoạt động bình thường.
Với đoạn code trên thì sau khi Save các link bị khóa luôn không hoạt động,đồng thời có bao nhiêu Sheet đều được Protect tất cả.
Hy vọng sớm có hồi âm từ các bạn
 
Upvote 0
Bác không muốn khóa thằng nào thì thêm vào dòng này. Muốn nữa thì thêm lệnh And vào là có thể quét loại trừ ra.
PHP:
    If Sheets(sh).Name <> "KhongKhoa" Then
Còn việc menu kia thì bác đặt cho nó code như thế nào vậy?
Nên để menu gọi Sheet bằng lệnh Sheets(Ten).Activate vậy chắc sẽ ổn hơn.
Thân.
 
Upvote 0
Bác không muốn khóa thằng nào thì thêm vào dòng này. Muốn nữa thì thêm lệnh And vào là có thể quét loại trừ ra.
PHP:
    If Sheets(sh).Name <> "KhongKhoa" Then
Còn việc menu kia thì bác đặt cho nó code như thế nào vậy?
Nên để menu gọi Sheet bằng lệnh Sheets(Ten).Activate vậy chắc sẽ ổn hơn.
Thân.
Bạn hướng dẫn như vậy,tôi đã thử nhưng chắc không đúng nên không đạt.Tôi gửi lại File ở bài 1,bạn giúp tôi chỉ Protẹct Sheet 1 và 2 nhé
Cám ơn
 
Upvote 0
Bạn xem code trong file nha!
Hoặc là đoạn code này cũng được.
PHP:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
On Error Resume Next
Dim Nsh As String
Nsh = "@Sheet1@Sheet2@"      'Ten Sheet muon chon de protect
For sh = 1 To Worksheets.Count
    If InStr(1, Nsh, "@" & Sheets(sh).Name & "@") <> 0 Then
'.............
Thân.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cám ơn 2 bạn,đã đạt yêu cầu tôi mong muốn.Tôi không biết viết VBA,chỉ ứng dụng cách làm của người khác thôi,nếu bắt đầu từ con số 0 các bạn khuyên tôi nên theo hướng nào để có thể trang bị cho mình chút vốn cỏn con để đôi lúc còn võ vẽ tí chút.
 
Upvote 0
Bạn xem code trong file nha!
Hoặc là đoạn code này cũng được.
PHP:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
On Error Resume Next
Dim Nsh As String
Nsh = "@Sheet1@Sheet2@"      'Ten Sheet muon chon de protect
For sh = 1 To Worksheets.Count
    If InStr(1, Nsh, "@" & Sheets(sh).Name & "@") <> 0 Then
'.............
Thân.
Po thân yêu ơi!
Nếu chỉ có 2 sheet cần Protect thì sao không.. trực tiếp luôn ---> Cần gì FOR để quét
Hic...
 
Upvote 0
Phát sinh vấn đề nhờ giúp đỡ.
Sau khi đã chèn các đoạn code để bảo vệ dữ liệu có hiện tượng File dữ liệu sau 1 thời gian mở khoảng 1h không làm gì,khi trở lại làm việc với File sẽ bị hiện tượng treo và báo lỗi như ảnh đính kèm(phần góc dưới bên phải hình).Đã thử nhiều lần,xóa code đi thì không còn hiện tượng đó,chèn lại code và sử dụng lại có hiện tượng như vậy.Kết luận sơ bộ có thể do đoạn code(ý kiến chủ quan của cá nhân mình thôi).
xin nhờ chữa bệnh hộ.

attachment.php


Đây file tôi gửi lên,tôi sử dụng excel 2007,Pass Protect sheet và VBA là cmss,mọi người giúp ktra lỗi gì mà cứ bị treo như vậy
Theo Ý kiến của Po-Pi... tôi chuyển sang File .xls gửi lên để mọi người xem giúp nhưng không biết ở File .xls có bị lỗi khi sử dụng không nữa vì tôi không dùng nó.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bác đưa file XLS đi. File này em đâu có xem được đâu.
Thân.
 
Upvote 0
Tôi đã gửi cả File excel 2003 và excel 2007 từ hôm trước rồi,đợi vẫn chưa thấy ai giúp đỡ.Ngày hôm nay làm việc với File 2007 tạm thời phải bỏ đoạn code ra vì cứ bị treo chương trình Excel.
Hy vọng sớm được giải quyết.
 
Upvote 0
Phát sinh vấn đề nhờ giúp đỡ.
Sau khi đã chèn các đoạn code để bảo vệ dữ liệu có hiện tượng File dữ liệu sau 1 thời gian mở khoảng 1h không làm gì, khi trở lại làm việc với File sẽ bị hiện tượng treo và báo lỗi như ảnh đính kèm (phần góc dưới bên phải hình). Đã thử nhiều lần, xóa code đi thì không còn hiện tượng đó, chèn lại code và sử dụng lại có hiện tượng như vậy. Kết luận sơ bộ có thể do đoạn code(ý kiến chủ quan của cá nhân mình thôi).
xin nhờ chữa bệnh hộ.
Vấn đề này, không phải do đoạn code của bạn đâu. Mà hình như là một lỗi gì đó của Excel 2007. Bởi vì tôi cũng gặp chuyện này hoài, nhất là với những dữ liệu lớn.

Bạn có thể tham khảo thêm:
 
Upvote 0
Web KT

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

Back
Top Bottom