Option Explicit
'
Public Sub Protect_Sheets()
On Error Resume Next
Dim strPass As String
Dim sht_name As Worksheet
strPass = InputBox("Enter your Password")
For Each sht_name In Worksheets
If Not sht_name.ProtectContents Then
sht_name.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=strPass
End If
Next sht_name
End Sub
'
Public Sub UnProtect_Sheets()
On Error Resume Next
Dim strPass As String
Dim sht_name As Worksheet
strPass = InputBox("Enter your Password")
For Each sht_name In Worksheets
sht_name.Unprotect strPass
Next sht_name
End Sub
[b]Sub ProtectSheets()[/b]
Dim iZ As Byte: Dim StrC As String
On Error Resume Next
For iZ = 1 To 9
StrC = "Sheet" & CStr(iZ)
Sheets(StrC).Select
ActiveSheet.Protect Password:="AaaA"
Next iZ
[b]End Sub[/b]
Theo mình nghĩ cả 2 cách đều thực hiện cho như cầu phát sinh của bạn được;Còn 1 trường hợp nhỏ nếu mình chỉ muốn chọn lựa 1 số sheet để protect hoặc unprotect chứ không phải tất cả các Sheet thì mình chưa giải quyết được. Mong các bạn giải quyết hộ mình.
Lưu ý : tất cả sheet mình đều đặt 1 cái tên riêng.
nthaison đã viết:Còn 1 trường hợp nhỏ nếu mình chỉ muốn chọn lựa 1 số sheet để protect hoặc unprotect chứ không phải tất cả các Sheet thì mình chưa giải quyết được. Mong các bạn giải quyết hộ mình.
Lưu ý : tất cả sheet mình đều đặt 1 cái tên riêng.
Davidsy đã viết:Bạn đặt tên cho các Sheet muốn Protect bắt đầu bằng một vài kí tự đặt biệt nào đó, vì dụ PrSheet1, PrSheet2 ...
Sau đó chỉnh lại code của bạn nvson chút xíu là ok rồi => Nếu sheet name mà bắt đầu bằng Pr thì mới Protect ... còn các tên khác thì miễn
.................
If Not sht_name.ProtectContents Then
If sht_name.Name Like "Pr*" Then sht_name.Protect
DrawingObjects:=True, Contents:=True, Scenarios:=True,
Password:=strPass
End If
..........
Have fun
Thien đã viết:Có thể đặt nhiều lệnh if được không nhỉ !!
Mỗi lệnh if là mỗi sheet muốn protect.
(If sht_name.Name Like "Pr*" Then sht_name.Protect )
.Sử dụng thủ tục Protect_Unprotect để giải quyết yêu cầu trên của bạn.
Sử dụng thủ tục Protect_Sheets và UnProtect_Sheets khi bạn muốn áp dụng cho tất cả các sheet.
Tôi kiểm tra thì vẫn hoạt động Bình thường nhé!.
Nhờ anh nvson!
mình đã tải file đính kèm của anh để lấy VBA
lập một workbook mới và tạo nút lệnh (chọn sheet - khóa all sheet - mở all sheet) trên sheet1 để thử Khóa/Mở các sheet còn lại
nhưng (xem file đính kèm) trên form "frmprotect" các chức năng "protect sheet" (thì không khóa các sheet được chọn mà chỉ khóa mỗi sheet1 và 2)
và "unprotect sheet" cũng vậy (thì không mở được các sheet được chọn)
Nhờ anh nvson xem giúp file đính kèm và sửa lại cái sai mà mình copy qua hổng đúng.
Xin cám ơn anh nhiều
p/s không đính kèm được file, nên mình đính kèm trên bài viết của anh nhé - Cảm ơn
cám ơn anh hml89 đã hồi âm
Cám ơn anh nhiềuLâu không động đến VBA, bạn xem trong file đính kèm nhé