Note: The other languages of the website are Google-translated. Back to English

Làm cách nào để khóa các ô được chỉ định mà không bảo vệ toàn bộ trang tính trong Excel?

Thông thường, bạn cần bảo vệ toàn bộ trang tính để khóa các ô khỏi việc chỉnh sửa. Có phương pháp nào để khóa ô mà không cần bảo vệ toàn bộ trang tính không? Bài viết này đề xuất một phương pháp VBA cho bạn.

Khóa các ô được chỉ định mà không bảo vệ toàn bộ trang tính bằng VBA


Khóa các ô được chỉ định mà không bảo vệ toàn bộ trang tính bằng VBA

Giả sử bạn cần khóa ô A3 và A5 trong trang tính hiện tại, mã VBA sau sẽ giúp bạn đạt được điều đó mà không cần bảo vệ toàn bộ trang tính.

1. Nhấp chuột phải vào tab trang tính và chọn Mã Chế độ xem từ menu chuột phải.

2. Sau đó sao chép và dán mã VBA bên dưới vào cửa sổ Mã. Xem ảnh chụp màn hình:

Mã VBA: Khóa các ô được chỉ định mà không bảo vệ toàn bộ trang tính

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 1 Then
        If Target.Row = 3 Or Target.Row = 5 Then
            Beep
            Cells(Target.Row, Target.Column).Offset(0, 1).Select
        End If
    End If
End Sub

Chú thích: Trong mã, Cột 1, Hàng = 3Hàng = 5 cho biết ô A3 và A5 trong trang tính hiện tại sẽ bị khóa sau khi chạy mã. Bạn có thể thay đổi chúng khi bạn cần.

3. Nhấn nút Khác + Q các phím đồng thời để đóng Microsoft Visual Basic cho các ứng dụng cửa sổ.

Bây giờ ô A3 và A5 bị khóa trong trang tính hiện tại. Nếu bạn cố gắng chọn ô A3 hoặc A5 trong trang tính hiện tại, con trỏ sẽ tự động được di chuyển đến ô liền kề bên phải.


Các bài liên quan:


Các công cụ năng suất văn phòng tốt nhất

Kutools cho Excel giải quyết hầu hết các vấn đề của bạn và tăng 80% năng suất của bạn

  • Tái sử dụng: Chèn nhanh công thức phức tạp, biểu đồ và bất cứ thứ gì bạn đã sử dụng trước đây; Mã hóa ô với mật khẩu; Tạo danh sách gửi thư và gửi email ...
  • Thanh siêu công thức (dễ dàng chỉnh sửa nhiều dòng văn bản và công thức); Bố cục đọc (dễ dàng đọc và chỉnh sửa số lượng ô lớn); Dán vào Dải ô đã Lọchữu ích. Cảm ơn !
  • Hợp nhất các ô / hàng / cột mà không làm mất dữ liệu; Nội dung phân chia ô; Kết hợp các hàng / cột trùng lặp... Ngăn chặn các ô trùng lặp; So sánh các dãyhữu ích. Cảm ơn !
  • Chọn trùng lặp hoặc duy nhất Hàng; Chọn hàng trống (tất cả các ô đều trống); Tìm siêu và Tìm mờ trong Nhiều Sổ làm việc; Chọn ngẫu nhiên ...
  • Bản sao chính xác Nhiều ô mà không thay đổi tham chiếu công thức; Tự động tạo tài liệu tham khảo sang Nhiều Trang tính; Chèn Bullets, Hộp kiểm và hơn thế nữa ...
  • Trích xuất văn bản, Thêm Văn bản, Xóa theo Vị trí, Xóa không gian; Tạo và In Tổng số phân trang; Chuyển đổi giữa nội dung ô và nhận xéthữu ích. Cảm ơn !
  • Siêu lọc (lưu và áp dụng các lược đồ lọc cho các trang tính khác); Sắp xếp nâng cao theo tháng / tuần / ngày, tần suất và hơn thế nữa; Bộ lọc đặc biệt bằng cách in đậm, in nghiêng ...
  • Kết hợp Workbook và WorkSheets; Hợp nhất các bảng dựa trên các cột chính; Chia dữ liệu thành nhiều trang tính; Chuyển đổi hàng loạt xls, xlsx và PDFhữu ích. Cảm ơn !
  • Hơn 300 tính năng mạnh mẽ. Hỗ trợ Office / Excel 2007-2021 và 365. Hỗ trợ tất cả các ngôn ngữ. Dễ dàng triển khai trong doanh nghiệp hoặc tổ chức của bạn. Đầy đủ tính năng Dùng thử miễn phí 30 ngày. Bảo đảm hoàn lại tiền trong 60 ngày.
tab kte 201905

Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều

  • Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
  • Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
  • Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!
officetab dưới cùng
Nhận xét (22)
Chưa có xếp hạng. Hãy là người đầu tiên xếp hạng!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi muốn ẩn công thức trong Ô O1. Vui lòng thông báo công thức cho giống nhau.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Ajay thân mến,
Đối với công thức ẩn của ô, vui lòng theo siêu liên kết dưới đây để nhận giải pháp.
https://www.extendoffice.com/documents/excel/1424-excel-hide-formulas.html
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Ajay thân mến,
Nếu bạn muốn ẩn công thức trong ô O1 mà không bảo vệ trang tính, hãy thử tập lệnh VBA bên dưới.
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Công thức tĩnh dưới dạng chuỗi
Nếu Target.Address = "$ O $ 1" thì
Với mục tiêu
TheFormula = .Formula
.Giá trị = .Giá trị
Kết thúc với
Khác
Với Phạm vi ("O1")
Nếu không .HasFormula thì
.Formula = TheFormula
Cuối Nếu
Kết thúc với
Cuối Nếu
End Sub

Sau khi sử dụng mã, có vẻ như công thức của ô O1 được thay đổi thành kết quả công thức. Trên thực tế, nó ẩn công thức với việc hiển thị kết quả công thức trong Thanh công thức. Và công thức sẽ hiển thị nếu mã bị hỏng.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
làm thế nào tôi có thể khóa một loạt các hàng, chẳng hạn như 4-46 và các cột 8 và 10
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
AJ thân mến,
Nếu bạn muốn khóa một loạt các hàng và cột được chỉ định, hãy thử tập lệnh VBA bên dưới.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim xRg theo phạm vi
Dim xRgEx dưới dạng phạm vi
Dim xRgExEach As Range
On Error Resume Next
Application.ScreenUpdating = Sai
Đặt xRg = Range ("H: J, 4: 46") 'Thay đổi phạm vi hàng và phạm vi cột mà bạn sẽ khóa mà không bảo vệ trang tính
Đặt xRgEx = Application.Intersect (xRg, Target)
Nếu xRgEx không có gì thì thoát Sub
Các ô (1, 1). Chọn 'Chỉ định một ô bạn sẽ chuyển sang sau khi chọn các ô bị khóa
Application.ScreenUpdating = True
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Đây là một giải pháp tuyệt vời, đặc biệt là trong các sổ làm việc được chia sẻ mà việc bật / tắt bảo vệ không được hỗ trợ. Cảm ơn bạn rất nhiều.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Kính gửi Crystal,

Bạn đã cung cấp cho tôi một giải pháp (một nửa trong số đó) mà tôi đã gặp khó khăn trong vài tuần qua, nhưng tôi sẽ cần thêm một số gợi ý.

Làm thế nào điều này có thể được áp dụng cho chỉ một phạm vi bảng, không phải toàn bộ trang tính? Cảm ơn trước.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Ngày tốt,
Như mã VBA được cung cấp bên dưới, vui lòng thay đổi phạm vi được chỉ định "H: J, 4: 46" thành phạm vi bảng mà bạn chỉ muốn khóa trong trang tính.
Và các ô (1,1) phải là ô bên ngoài phạm vi bảng. Khi nhấp vào bất kỳ ô nào trong phạm vi bảng, con trỏ sẽ tự động được di chuyển đến ô đó.

Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Dim xRg theo phạm vi
Dim xRgEx dưới dạng phạm vi
Dim xRgExEach As Range
On Error Resume Next
Application.ScreenUpdating = Sai
Đặt xRg = Range ("H: J, 4: 46") 'Thay đổi phạm vi hàng và phạm vi cột mà bạn sẽ khóa mà không bảo vệ trang tính
Đặt xRgEx = Application.Intersect (xRg, Target)
Nếu xRgEx không có gì thì thoát Sub
Các ô (1, 1). Chọn 'Chỉ định một ô bạn sẽ chuyển sang sau khi chọn các ô bị khóa
Application.ScreenUpdating = True
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Khi bạn đã chạy VBA để khóa các ô đó, làm thế nào để bạn mở khóa chúng?
Bạn có phải có mã VBA để mở khóa không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào RENICK,

Chúng tôi không cung cấp code bẻ khóa VBA, các bạn tự phá code thì có thể chỉnh sửa bình thường.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Kính gửi Crystal,

Dù sao đi nữa, macro này có thể được chạy tự động khi mở tệp hoặc khi nhấp vào bất kỳ ô nào. Tôi không muốn mọi người phải chạy macro theo cách thủ công để các phạm vi bắt buộc được bảo vệ.

Ngoài ra, tôi sẽ cần bảo vệ 12 phạm vi không liền kề. Ví dụ: I11: I20 và K11: K20 và M11: 20 vv ... Làm cách nào để thực hiện điều này?

Cuối cùng, và điều này có thể được yêu cầu quá nhiều, nhưng liệu có thể áp dụng bảo vệ cho các phạm vi ví dụ mà tôi đã cung cấp ở trên, NHƯNG sau đó mở rộng bảo vệ xuống các hàng bổ sung khi các phạm vi mới được thêm vào? Nói cách khác, bảo vệ sẽ được áp dụng cho I11: I20 và K11: K20 và M11: 20, nhưng người dùng sẽ có thể thêm một hàng mới (hàng 21), với dữ liệu mới, nhưng khi hàng mới được thêm vào thì biện pháp bảo vệ sẽ áp dụng cho I11: I21 và K11: K21 và M11: 21. Tôi đang yêu cầu mặt trăng? :-)

Cảm ơn bạn vì tất cả mọi thứ mà bạn đã cung cấp! Tôi không thể cảm ơn bạn và những người khác như bạn đủ để chia sẻ kiến ​​thức của bạn. Kinh ngạc!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Carlos thân mến,
Mã VBA sau có thể giúp bạn giải quyết vấn đề. Vui lòng điền các phạm vi của bạn vào dòng thứ tư của mã và nhấn các phím Alt + Q để quay lại trang tính. Sau đó, vui lòng chuyển sang trang tính khác và sau đó quay lại trang tính hiện tại để kích hoạt mã. Cảm ơn bình luận của bạn.

Dim xRg theo phạm vi
Private Sub Worksheet_Activate ()
Nếu xRg không có gì thì
Đặt xRg = Union (Phạm vi ("I10: I20"), Phạm vi ("K10: K20"), Phạm vi ("M10: M20"), Phạm vi ("O10: O20"))
Cuối Nếu
End Sub
Private Sub Worksheet_Change (ByVal Target As Range)
Dim I dưới dạng số nguyên
Dim xRgNew As Range
Dim xRgLCell As Range
On Error Resume Next
Application.EnableEvents = Sai
Đối với I = 1 Đến xRg.Areas.Count
Đặt xRgLCell = xRg.Areas.Item (I)
Đặt xRgLCell = xRgLCell (xRgLCell.Count) .Offset (1, 0)
Nếu Target.Address = xRgLCell.Address Thì
Nếu xRgNew không có gì thì
Đặt xRgNew = Target
Khác
Đặt xRgNew = Union (xRgNew, Target)
Cuối Nếu
Cuối Nếu
Sau
Đặt xRg = Union (xRg, xRgNew)
Ứng dụng.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange (ByVal Target As Range)
Về lỗi GoTo Exitsub
Nếu (Không Giao nhau (xRg, Mục tiêu) Không có gì) Và (Mục tiêu.Count = 1) Thì
Target.Offset (0, 1) .Select
Cuối Nếu
Thoát khỏi trang:
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Kính gửi Crystal,

Cám ơn bạn rất nhiều về điều này. Nó hoạt động hoàn hảo.

Tôi đã sử dụng mã trong bình luận của Carlos để chạy macro tự động khi bạn mở tệp. Tôi đã tự hỏi liệu có cách nào có nút "Hoàn tác" hoặc một cái gì đó tương tự, cho phép bạn hủy mã đó và do đó, mở khóa những phạm vi đã bị khóa.

Tôi muốn chúng được khóa hầu hết thời gian, nhưng tôi muốn mở khóa chúng nếu tôi cần thay đổi bất kỳ dữ liệu nào. Lý do duy nhất tôi không bảo vệ toàn bộ trang tính là vì, nếu tôi làm vậy, nó sẽ vô hiệu hóa khả năng mở rộng trên các bảng. Đến lượt nó, hãy mở rộng trên biểu đồ đường.

Cảm ơn rất nhiều vì sự giúp đỡ!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào Erin,
Bạn có thể phá mã theo cách thủ công bằng cách nhấp vào nút Break trong cửa sổ Microsoft Visual Basic for Applications để mở khóa các phạm vi đó. Và chạy mã để kích hoạt lại. Cám ơn bạn đã góp ý.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Bonjour,
Nhận xét faire pour verrouiller de la cellule B8 à B10000?
D'avance merci de votre réponse.
Christophe
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Có bất kỳ chức năng nào để đặt ví dụ Hàng 2 ô 13 thành 900 không? Hay tôi có cần phải gõ từng tên ô trong mã theo cách thủ công không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào bạn,

Tôi đã sử dụng mã được cung cấp cho Carlos và nó thực hiện chính xác những gì tôi muốn. Có cách nào để một số phạm vi được bù đắp trong ROW ở bên phải của phạm vi được bảo vệ (như mã "Carlos" đã thực hiện), nhưng có các phạm vi khác bù đắp trong CỘT vào ô ngay bên dưới phạm vi được bảo vệ không? Tôi đã thử nhập mã "Carlos" hai lần và thay đổi độ lệch, nhưng tôi nhận được nhiều lỗi.

Cảm ơn bạn
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào Charlie,
Xin lỗi không thể giúp bạn với điều đó được nêu ra. Cảm ơn bình luận của bạn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,

Tôi đã cố gắng sử dụng mã cho các phạm vi mà bạn đã đăng trước đó nhưng nó không hoạt động - bạn có thể tư vấn cho tôi nếu tôi nên kết hợp mã cho các phạm vi trên hay dưới không?


Cảm ơn
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi đã thử không thể, Ẩn công thức mà không cần bảo vệ.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Có cách nào để mã VBA này tự động chạy mỗi khi ai đó mở tệp không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Aaron, Sau khi thêm mã, vui lòng lưu sổ làm việc dưới dạng Sổ làm việc Hỗ trợ Macro Excel (bấm vào Tập tin > Save As > chỉ định một thư mục cho tệp> chọn Sổ làm việc hỗ trợ macro Excel từ Tiết kiệm như gõ danh sách thả xuống> Lưu). Sau đó, mỗi khi bạn mở tệp, mã sẽ tự động hoạt động.
Không có bình luận nào được đăng ở đây
Để lại ý kiến ​​của bạn
Đăng với tư cách khách
×
Đánh giá bài viết này:
0   Nhân vật
Các vị trí được đề xuất

Kết nối với chúng tôi

Bản quyền © 2009 - www.extendoffice.com. | Đã đăng ký Bản quyền. cung cấp bởi ExtendOffice. | BẢN ĐỒ CHI NHÁNH
Microsoft và logo Office là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của Microsoft Corporation tại Hoa Kỳ và / hoặc các quốc gia khác.
Được bảo vệ bởi Sectigo SSL