相关疑难解决方法(0)

保护Excel中的单元格,但允许通过VBA脚本修改这些单元格

我正在使用Excel,其中某些字段允许用户输入,其他单元格将受到保护.我使用过工具保护表,但是在执行此操作后,我无法更改VBA脚本中的值.我需要限制工作表以停止用户输入,同时允许VBA代码根据某些计算更改单元格值.

excel vba excel-vba

58
推荐指数
2
解决办法
20万
查看次数

在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万
查看次数

安全的VBA Excel加载代码

我有一个在VBA中开发的Excel插件,部署在网络上.

插件从Oracle数据库中读取,并在新工作表中粘贴表,该工作表还将包含一个用于刷新表的按钮(三角形).

一切都很好,但我必须用密码保护代码.

当我这样做时,某些机器上会出现以下错误:

隐藏模块中的编译错误:Main.当代码与此应用程序的版本,平台或体系结构不兼容时,通常会发生此错误.

虽然它在解锁时完美编译.

在其他机器上,它需要关闭VBA密码,即使我没有在关闭事件下定义的类型.

我希望保护我的代码,而不会遇到上述问题.任何建议表示赞赏.

excel vba excel-vba excel-addins

8
推荐指数
1
解决办法
713
查看次数

标签 统计

excel ×3

excel-vba ×3

vba ×3

excel-addins ×1