相关疑难解决方法(0)

在MS-Excel中保护工作表时如何避免运行时错误?

下面的代码片段更改了单元格的数据验证状态,并在Excel-2003工作表不受保护时运行.但是,当我保护工作表时,宏不会运行并引发运行时错误

运行时错误'-2147417848(80010108)':

对象'验证'的方法'添加'失败

我试过包装代码

Me.unprotect
...
Me.protect
Run Code Online (Sandbox Code Playgroud)

但这不能正常工作.那么,当工作表受到保护而没有上述运行时错误时,如何修改下面的代码才能工作(即让代码修改解锁单元格的验证)?

更新

我的原始工作簿是Excel 2003.我在Excel 2007中测试了@ eJames解决方案,其中包含Workbook_Open的以下定义

Sub WorkBook_Open()
    Me.Worksheets("MainTable").Protect  contents:=True, userinterfaceonly:=True 
End Sub
Run Code Online (Sandbox Code Playgroud)

当工作表受到保护时,代码仍会失败并出现以下运行时错误

运行时错误'1004':应用程序定义的错误或对象定义的错误

谢谢,阿齐姆


代码片段

'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, …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

10
推荐指数
1
解决办法
4万
查看次数

标签 统计

excel ×1

excel-vba ×1

vba ×1