VBA Protect / Unprotect Worksheets

Hướng dẫn này sẽ dạy bạn mọi thứ về bảo vệ Trang tính Excel trong VBA - Cách Bảo vệ hoặc Bỏ bảo vệ Trang tính trong Excel.

Bỏ bảo vệ trang tính Excel mà không cần mật khẩu

Để bỏ bảo vệ Trang tính không được bảo vệ bằng mật khẩu, hãy sử dụng dòng mã đơn giản sau:

1 Worksheets ("Sheet1"). Bỏ bảo vệ

Bỏ bảo vệ trang tính Excel bằng mật khẩu

Để bỏ bảo vệ Trang tính được bảo vệ bằng mật khẩu, bạn cũng phải nhập mật khẩu:

1 Worksheets ("Sheet1"). Bỏ bảo vệ "Mật khẩu"

Bỏ bảo vệ trang tính - Mất mật khẩu

Để bỏ bảo vệ Trang tính mà không biết mật khẩu, bạn phải sử dụng bổ trợ khôi phục mật khẩu.

Bảo vệ trang tính

Bảo vệ trang tính cho phép bạn khóa các khía cạnh nhất định của trang tính khỏi việc chỉnh sửa.

Thực đơn này được tìm thấy trong Trang chủ> Định dạng> Bảo vệ trang tính hoặc bằng cách nhấp chuột phải vào tên tab Trang tính:

Thông thường nhất, điều này được sử dụng để bảo vệ các ô "Đã khóa" khỏi việc chỉnh sửa, chỉ cho phép người dùng cuối chỉnh sửa các ô nhất định.

Bạn có thể khóa các ô bằng cách chọn chúng và mở Tab bảo vệ sau đó Trình đơn Định dạng Ô (CTRL + 1).

Bạn cũng có thể ngăn người dùng thay đổi cấu trúc trang tính (chèn, xóa hoặc thay đổi kích thước Hàng & Cột) hoặc tương tác với Bộ lọc tự động, v.v.

Bảo vệ trang tính - Không cần mật khẩu

Bạn có thể muốn bảo vệ Trang tính mà không cần nhập mật khẩu. Điều này sẽ ngăn các thay đổi ngẫu nhiên đối với trang tính, đồng thời cấp cho người dùng quyền truy cập để thực hiện các thay đổi nếu muốn.

1 Worksheets ("Sheet1"). Bảo vệ

Bảo vệ trang tính - Bảo vệ bằng mật khẩu

1 Worksheets ("Sheet1"). Bảo vệ "Mật khẩu"

Bảo vệ cài đặt trang tính

Các ví dụ trên sẽ bảo vệ Trang tính với các cài đặt bảo vệ tiêu chuẩn. Thay vào đó, bạn có thể muốn tùy chỉnh những gì được bảo vệ:

12345 Worksheets ("Sheet1"). Bảo vệ Mật khẩu: = strPassword, DrawingObjects: = True, Contents: = True, Scenarios: = True, _UserInterfaceOnly: = True, AllowFormattingCells: = False, AllowFormattingColumns: = False, _AllowFormattingRows: = False, AllowInsertingColumns: = False, AllowInsertingRows: = False, _AllowInsertingHyperlinks: = False, AllowDeletingColumns: = False, AllowDeletingRows: = False, _AllowSorting: = False, AllowFiltering: = False, AllowUsingPivotTables: = Sai

Thay vì sử dụng cú pháp ở trên, tôi khuyên bạn nên ghi Macro với cài đặt mong muốn của bạn (được chọn với menu Bảo vệ trang tính ở trên) và sao chép + dán mã đã ghi vào quy trình của bạn.

Bảo vệ trang tính - Cho phép VBA thực hiện thay đổi

Theo mặc định, khi bạn bảo vệ một trang tính, bảo vệ sẽ áp dụng cho các hoạt động VBA ngoài các hành động của người dùng. Nếu VBA cố gắng sửa đổi một ô bị khóa, bạn sẽ thấy lỗi thời gian chạy 1004. Để tránh điều này, bạn có thể bỏ bảo vệ và bảo vệ lại trang tính của mình bất cứ khi nào VBA cần tương tác với chúng:

123456789 Sub Edit_Sheet1 ()'Unprotect Sheet1Worksheets ("Sheet1"). Bỏ bảo vệ'Làm gì đó với Sheet1'Reprotect Sheet1Worksheets ("Sheet1"). Bảo vệKết thúc Sub

Tuy nhiên, bạn rất dễ quên bỏ bảo vệ và / hoặc bảo vệ lại trang tính của mình. Điều này có thể làm tăng xác suất xảy ra lỗi mã hóa.

Thay vào đó, bạn có thể sử dụng cài đặt UserInterFaceOnly. Khi ĐÚNG, các trang tính sẽ CHỈ được bảo vệ khỏi người dùng, KHÔNG khỏi VBA.Mã VBA của bạn sẽ được tự do chỉnh sửa trang tính giống như khi nó được mở khóa.

Hai điểm quan trọng về UserInterFaceOnly:

  • Cài đặt này không có sẵn từ menu Bảo vệ Trang tính (được hiển thị ở trên). Đó là một cài đặt phải được xác định trong VBA.
  • Cài đặt này không được lưu khi bạn đóng sổ làm việc. Nó phải được xác định lại mỗi khi một sổ làm việc được mở.

Vì vậy, để đặt thuộc tính UserInterFaceOnly, bạn nên đặt quy trình sự kiện Workbook_Open sau trong mô-đun ThisWorkbook:

1234567 Private Sub Workbook_Open ()Dim ws As WorksheetĐối với mỗi ws Trong ThisWorkbook.Worksheetsws.Protect UserInterfaceOnly: = TrueTuần tiếp theoKết thúc Sub

Workbook_Open là một thủ tục sự kiện đặc biệt sẽ chạy mỗi khi mở sổ làm việc. Nó phải được đặt trong mô-đun ThisWorkbook. Ngoài ra, bạn có thể sử dụng quy trình sự kiện Auto_Open (không được đề cập ở đây).

Bỏ bảo vệ tất cả các trang tính Macro

Macro này sẽ bỏ bảo vệ tất cả Trang tính trong sổ làm việc:

123456789 'Bỏ bảo vệ tất cả các trang tínhSub UnProtectAllSheets ()Dim ws As WorksheetĐối với mỗi ws trong Worksheetsws.Unprotect "mật khẩu"Tuần tiếp theoKết thúc Sub

Bảo vệ Macro Tất cả Trang tính

Macro này sẽ bảo vệ tất cả Trang tính trong Sổ làm việc:

123456789 'Bảo vệ tất cả các trang tínhSub ProtectAllSheets ()Dim ws As WorksheetĐối với mỗi ws trong Worksheetsws.Protect "mật khẩu"Tuần tiếp theoKết thúc Sub

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave