Làm sao khóa tất cả các sheet bằng code

Liên hệ QC

thanhtratt

Thành viên hoạt động
Tham gia
14/7/09
Bài viết
136
Được thích
166
Giới tính
Nam
Nghề nghiệp
Search
Mình có 1 file excel có rất nhiều sheet mình muốn dùng 1 macro khóa lại tất cả các sheet, chỉ cho nhập liệu không cho sửa chửa công thức. Xin cám ơn.
 
Mình có 1 file excel có rất nhiều sheet mình muốn dùng 1 macro khóa lại tất cả các sheet, chỉ cho nhập liệu không cho sửa chửa công thức. Xin cám ơn.

Có thể dùng Proteted Sheet mà, còn muốn không cho sửa công thức thì bạn xem bài Proteted cell trong diễn đàn có.
 
Upvote 0
Proteted Sheet thì mình biết nhưng file mình có quá nhiều sheet phải khóa và mở từng sheet khi chỉnh sửa thì mất thời gian quá. Mình muốn khóa và mở 1 lần cho tất cả các sheet kìa, có cách nào không bạn?
 
Upvote 0
Mình cũng có 1 File có rất nhiều sheet, không biết có cách nào khóa 1 lần mà được cho tất cả các sheet không nhỉ?
 
Upvote 0
Mình cũng có 1 File có rất nhiều sheet, không biết có cách nào khóa 1 lần mà được cho tất cả các sheet không nhỉ?

Thì dùng code:
Mã:
Private Sub ProtectAllSheets(ByVal Password As String, ByVal isProtect As Boolean)
  'isProtect = true ---> Khóa toàn bộ
  'isProtect = false ---> mở khóa toàn bộ
  Dim wks As Worksheet
  On Error Resume Next
  For Each wks In ActiveWorkbook.Worksheets
    If isProtect Then
      wks.Protect Password
    Else
      wks.UnProtect Password
    End If
  Next
End Sub
Áp dụng:
1> Để khóa tất cả các sheet
Mã:
Sub Main()
  ProtectAllSheets "password", [COLOR=#ff0000][B]True[/B][/COLOR]
End Sub
2> Để mở khóa tất cả các sheet
Mã:
Sub Main()
  ProtectAllSheets "password", [B][COLOR=#0000cd]False[/COLOR][/B]
End Sub
 
Upvote 0
Em cảm ơn thầy nhiều, em sẽ thử ngay.
 
Upvote 0
Thì dùng code:
Mã:
Private Sub ProtectAllSheets(ByVal Password As String, ByVal isProtect As Boolean)
  'isProtect = true ---> Khóa toàn bộ
  'isProtect = false ---> mở khóa toàn bộ
  Dim wks As Worksheet
  On Error Resume Next
  For Each wks In ActiveWorkbook.Worksheets
    If isProtect Then
      wks.Protect Password
    Else
      wks.UnProtect Password
    End If
  Next
End Sub
Áp dụng:
1> Để khóa tất cả các sheet
Mã:
Sub Main()
  ProtectAllSheets "password", [COLOR=#ff0000][B]True[/B][/COLOR]
End Sub
2> Để mở khóa tất cả các sheet
Mã:
Sub Main()
  ProtectAllSheets "password", [B][COLOR=#0000cd]False[/COLOR][/B]
End Sub

Thầy ơi coppy cả 3 đoạn code này ạ. Hay chỉ cần 2 đoạn dưới vậy thầy?
 
Upvote 0
Thầy ơi coppy cả 3 đoạn code này ạ. Hay chỉ cần 2 đoạn dưới vậy thầy?

Code trên cùng là CODE CHÍNH, bắt buộc phải có
2 đoạn dưới bạn chọn 1 trong 2 thôi (khóa hoặc mở khóa)
----------
Ghi rõ ràng thế còn hỏi nữa trời?
 
Upvote 0
Hi, em cảm ơn thầy.
Thầy ơi em có 1 câu hỏi nữa ạ: muốn sử dụng 2 code này mình phải tạo button ở 1 sheet bất kì ạ?
 
Upvote 0
Thầy ơi, khóa bằng cách này rất nhanh nhưng không đặt pass được thầy ạ. Thầy có thể giúp em được không?

Pass gì đó bạn đã viết trong code rồi còn gì
Mã:
Sub Main()   
  ProtectAllSheets "[COLOR=#ff0000]password[/COLOR]", [B]True[/B]
End Sub
Chổ màu đỏ đỏ ấy
 
Upvote 0
Rất hay, em cảm ơn thầy nhiều ạ.
 
Upvote 0
Nhờ thầy NDU chỉ giúp em câu lệnh chọn toàn bộ các sheet trong VBA với ạ, em cảm ơn thầy
 
Upvote 0
Vấn đề là ví dụ giờ em có 1 file excel gồm 3 sheet, khi dùng lệnh record macro thu lại câu lệnh select all sheet, câu lệnh trong macro hiển thì là select.aray( sheet 1, sheet 2, sheet 3). nhưng giờ nếu thêm 1 sheet nữa ( sheet 4) thì câu lệnh vba vừa rồi không tự động chọn sheet 4, lại phải thêm thủ công. Em muốn câu lệnh chọn hết tất cả các sheet để tiện khi in ấn. Lang thang trên mạng em có tìm đc 1 đoạn sub khá ổn nhưng không hiểu lắm.
Sub chonsheet ()
Dim Sh as worksheet, check as bolean
chechk = true
For each sh in thisworkbook.worksheets
if sh.nam <> "dulieu" then sh.select check: check = false
next
activewindow.selectedsheets.printout
end
Em hiểu nôm na là nó sẽ dùng biến Check để chọn tất cả các sheet không phải tên "dulieu" để in.
có cách nào tin gọn macro trên không thầy, ví dụ k cần kiếm tra điều kiện tên khác "dulieu"
 
Upvote 0
Vấn đề là ví dụ giờ em có 1 file excel gồm 3 sheet, khi dùng lệnh record macro thu lại câu lệnh select all sheet, câu lệnh trong macro hiển thì là select.aray( sheet 1, sheet 2, sheet 3). nhưng giờ nếu thêm 1 sheet nữa ( sheet 4) thì câu lệnh vba vừa rồi không tự động chọn sheet 4, lại phải thêm thủ công. Em muốn câu lệnh chọn hết tất cả các sheet để tiện khi in ấn. Lang thang trên mạng em có tìm đc 1 đoạn sub khá ổn nhưng không hiểu lắm.
Sub chonsheet ()
Dim Sh as worksheet, check as bolean
chechk = true
For each sh in thisworkbook.worksheets
if sh.nam <> "dulieu" then sh.select check: check = false
next
activewindow.selectedsheets.printout
end
Em hiểu nôm na là nó sẽ dùng biến Check để chọn tất cả các sheet không phải tên "dulieu" để in.
có cách nào tin gọn macro trên không thầy, ví dụ k cần kiếm tra điều kiện tên khác "dulieu"
Mục đích cuối cùng của bạn trong việc chọn các sheet là để làm gì? Để in chăng? Không cần phải chọn tất cả các sheet vẫn in được mà
 
Upvote 0
Web KT

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

Back
Top Bottom