Tôi muốn ngăn người khác chỉnh sửa nội dung ô trong bảng excel của tôi bằng VBA. có khả năng làm cái này không?Làm thế nào để Khóa dữ liệu trong một ô trong excel bằng cách sử dụng vba
Trả lời
Hãy thử sử dụng các phương pháp Worksheet.Protect
, như vậy:
Sub ProtectActiveSheet()
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Protect DrawingObjects:=True, Contents:=True, _
Scenarios:=True, Password="SamplePassword"
End Sub
Bạn nên, tuy nhiên, hãy quan tâm đến bao gồm cả mật khẩu trong mã VBA của bạn. Bạn không nhất thiết cần mật khẩu nếu bạn chỉ cố gắng tạo ra một rào cản đơn giản ngăn người dùng mắc lỗi nhỏ như xóa công thức, v.v.
Ngoài ra, nếu bạn muốn xem cách thực hiện một số điều trong VBA trong Excel, hãy thử ghi lại Macro và xem mã mà nó tạo ra. Đó là một cách hay để bắt đầu trong VBA.
Trước tiên, bạn có thể chọn ô bạn không muốn được bảo vệ (được sử dụng có thể chỉnh sửa) bằng cách thiết lập tình trạng bị khoá trong số họ để False:
Worksheets("Sheet1").Range("B2:C3").Locked = False
Sau đó, bạn có thể bảo vệ sheet, và tất cả các ô khác sẽ được bảo vệ. Mã để làm điều này, và vẫn cho phép mã VBA của bạn để sửa đổi các tế bào là:
Worksheets("Sheet1").Protect UserInterfaceOnly:=True
hoặc
Call Worksheets("Sheet1").Protect(UserInterfaceOnly:=True)
Bạn cũng có thể muốn quảng cáo d mật khẩu, nếu không nó là một vấn đề tầm thường chỉ cần nhấp vào "bảng tính không bảo vệ" và sau đó bạn có thể thực hiện chỉnh sửa cho các tế bào bị khóa trước đó. – Jonathan
dòng bên trên Bảng tính ("Sheet1"). Bảo vệ (UserInterfaceOnly: = True) phải là Worksheets ("Sheet1"). Bảo vệ UserInterfaceOnly: = True, nghĩa là không có dấu ngoặc đơn – dinotom
@dinotom, xem lịch sử chỉnh sửa và người đã chỉnh sửa theo cách đó giải thích lý do tại sao –
Sub LockCells()
Range("A1:A1").Select
Selection.Locked = True
Selection.FormulaHidden = False
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= False, AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True
End Sub
Bạn cũng có thể làm điều đó trên mức bảng bị bắt trong của bảng thay đổi sự kiện. Nếu bộ đó nhu cầu của bạn tốt hơn. Cho phép khóa động dựa trên các giá trị, tiêu chí, vv ...
Private Sub Worksheet_Change(ByVal Target As Range)
'set your criteria here
If Target.Column = 1 Then
'must disable events if you change the sheet as it will
'continually trigger the change event
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
MsgBox "You cannot do that!"
End If
End Sub
Hãy nói ví dụ như trong một trường hợp, nếu bạn muốn các tế bào bị khóa từ cự ly A1 đến I50 thì dưới đây là các mã:
Worksheets("Enter your sheet name").Range("A1:I50").Locked = True
ActiveSheet.Protect Password:="Enter your Password"
Trong một trường hợp khác nếu bạn đã có một tấm bảo vệ sau đó làm theo bên dưới mã:
ActiveSheet.Unprotect Password:="Enter your Password"
Worksheets("Enter your sheet name").Range("A1:I50").Locked = True
ActiveSheet.Protect Password:="Enter your Password"
- 1. Cắt ô bằng VBA trong Excel
- 2. Làm thế nào để sử dụng VBA để làm cho một ô trong Excel 2007 trong suốt
- 3. Làm cách nào để tập trung một ô trong Excel VSTO bằng C#? Làm thế nào để chọn ô đầu tiên sử dụng C# trong VSTO?
- 4. Làm thế nào để ẩn một trang tính trong Excel bằng cách sử dụng OpenXML C#?
- 5. Sử dụng chức năng "Ô" ở excel vba
- 6. Cách tạo hộp thoại lựa chọn phạm vi bằng cách sử dụng vba trong Excel?
- 7. Làm thế nào để bạn lấy Excel làm mới dữ liệu trên trang tính từ bên trong VBA?
- 8. Chuyển đổi công thức của ô thành văn bản bằng cách sử dụng excel vba
- 9. Làm thế nào để thêm một nút lập trình trong VBA bên cạnh một số dữ liệu ô tấm?
- 10. OnClick trong Excel VBA
- 11. Excel vba: Loại ô và dải ô
- 12. Chọn các ô không trống trong Excel với VBA
- 13. Excel/VBA: Truyền một ô đơn lẻ làm đối số
- 14. Làm thế nào để có được số dòng trong bảng excel bằng cách sử dụng python?
- 15. Cơ sở dữ liệu Truy cập SQL trong Excel VBA
- 16. Trong VBA, làm thế nào để trả về một mảng/hoặc ghi vào các ô bằng cách sử dụng một hàm?
- 17. Khóa cột đơn trong Excel bằng cách sử dụng Apache POI
- 18. Làm thế nào để trả về một dải ô trong VBA mà không cần sử dụng vòng lặp?
- 19. Làm thế nào để bạn chọn toàn bộ bảng tính excel với Phạm vi sử dụng Macro trong VBA?
- 20. Làm cách nào để truy xuất giá trị ô Excel trong VBA như được định dạng trong WorkSheet?
- 21. Làm thế nào để lưu tập tin csv bán kết tràng bằng cách sử dụng vba?
- 22. Cách thay đổi Định dạng của Ô thành Văn bản bằng cách sử dụng VBA
- 23. Làm thế nào để mã hóa dữ liệu trong php bằng cách sử dụng khóa công khai/riêng?
- 24. Làm thế nào để sắp xếp NameValueCollection bằng cách sử dụng một khóa trong C#?
- 25. Sử dụng các kiểu dữ liệu tùy chỉnh trong VBA
- 26. Xóa hàng trống trong Excel bằng VBA
- 27. Viết Excel VBA để nhận dữ liệu từ Access
- 28. Thực hiện một lệnh trong dấu nhắc lệnh bằng cách sử dụng excel VBA
- 29. Array trong excel vba
- 30. làm thế nào để tách một chuỗi với nhiều delimeters trong vba excel?
http://stackoverflow.com/questions/17111648/how-to-lock-excel-cells-in-vba/ 18868676 # 18868676 –