Đoạn mã dưới đây thay đổi trạng thái xác thực dữ liệu của ô và chạy khi trang tính Excel-2003 không được bảo vệ. Tuy nhiên, khi tôi bảo vệ sheet công việc vĩ mô không chạy và đặt ra một lỗi thời gian chạyLàm cách nào để tránh lỗi thời gian chạy khi trang tính được bảo vệ trong MS-Excel?
Run-time error '-2147417848 (80010108)':
Method 'Add' of object 'Validation' failed
Tôi đã thử gói mã với
Me.unprotect
...
Me.protect
Nhưng điều này không làm việc đúng cách. Vì vậy, làm thế nào tôi có thể sửa đổi mã dưới đây để làm việc (tức là có mã sửa đổi xác nhận của ô mở khóa) khi trang tính được bảo vệ mà không có lỗi thời gian chạy ở trên?
Cập nhật
cuốn sách tác phẩm gốc của tôi là một Excel 2003. Tôi đã thử nghiệm @ giải pháp eJames trong Excel 2007 với định nghĩa sau đây cho Workbook_Open
Sub WorkBook_Open()
Me.Worksheets("MainTable").Protect contents:=True, userinterfaceonly:=True
End Sub
Mã này vẫn không thành công với những điều sau run- lỗi thời gian khi trang tính được bảo vệ
Run-time error '1004': Application-defined or object-defined error
Xin cảm ơn, Azim
Code Snippet
'cell to add drop down validation list'
dim myNamedRange as String
dim modifyCell as Range
modifyCell = ActiveCell.Offset(0,1)
' set list values based on some conditions not defined for brevitity'
If myCondition then
myNamedRange = "range1"
Else
myNamedRange = "range2"
End If
With modifyCell.Validation
.Delete
'Run time error occurs on the next line'
.Add Type:=xlValidateList, AlertStyle:=xlValidAltertStop, _
Operator:=xlBetween, Formula1:="=" & myNamedRange
...
' skipping more property setting code '
...
End With
bản sao có thể có của [Cách bảo vệ các ô trong Excel nhưng cho phép chúng được sửa đổi bởi tập lệnh VBA] (http://stackoverflow.com/questions/125449/how-to-protect-cells-in-excel-but- cho phép-những-được-được-sửa-by-vba-script) –