Bảo vệ cấu trúc của worksheets
Sử dụng VBA để khóa và mở khóa các sheet của bạn. Lý do là bạn muốn nhập dữ liệu vào một vài ô nhưng không muốn cho người dùng nhập vào, cũng không muốn cho xem ô đó chứa thông tin, cũng không cho chọn và chỉnh sửa. Nhưng nếu bạn khóa luôn ô đó thì mã VBA của bạn sẽ không chạy được. Để giải quyết vấn đề này thì bạn phải sử dụng một mẹo nhỏ hay chèn thêm dòng lệnh protect và unprotect.
Đoạn mã để thực hiện bảo vệ sheet.
Đoạn mã để thực hiện bỏ bảo vệ sheet.
Hướng dẫn sử dụng:
1. Mở file excel
2. Ấn Alt+F11 để vào màn hình soạn thảo VBA
3. Thêm một Module trên thanh Insert
4. Sao chép đoạn mã trên và dán vào màn hình soạn thảo
5. Lưu file với đuôi xlsm
6. Ấn F5 để thực hiện
Ứng dụng:
Tại ô B2, Bạn không muốn cho người khác lựa chọn để xem kết quả và khóa các đối tượng trên màn hình. Do đó, bạn cần phải chèn thêm một đoạn mã để bỏ bảo vệ và khóa lại khi dữ liệu đã được xử lý xong.
Mã tham khảo
Đoạn mã để thực hiện bảo vệ sheet.
Sub sbProtectSheet()
ActiveSheet.Protect "password", True, True
End Sub
Đoạn mã để thực hiện bỏ bảo vệ sheet.
Sub sbUnProtectSheet()
ActiveSheet.Unprotect "password"
End Sub
Hướng dẫn sử dụng:
1. Mở file excel
2. Ấn Alt+F11 để vào màn hình soạn thảo VBA
3. Thêm một Module trên thanh Insert
4. Sao chép đoạn mã trên và dán vào màn hình soạn thảo
5. Lưu file với đuôi xlsm
6. Ấn F5 để thực hiện
Ứng dụng:
Tại ô B2, Bạn không muốn cho người khác lựa chọn để xem kết quả và khóa các đối tượng trên màn hình. Do đó, bạn cần phải chèn thêm một đoạn mã để bỏ bảo vệ và khóa lại khi dữ liệu đã được xử lý xong.
Mã tham khảo
Sub Ketqua()
ActiveSheet.Unprotect "password"
With Cells.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
ActiveCell.Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.149998474074526
.PatternTintAndShade = 0
End With
If ActiveCell.Row = 13 + Range("b2") Then
Range("b18") = "True"
With Range("B18").Font
.Color = -10477568
.TintAndShade = 0
End With
Else
With Range("b18").Font
.Color = -16776961
.TintAndShade = 0
End With
Range("b18") = "False"
End If
ActiveSheet.Protect "password", True, True
End Sub