让macros访问受保护的表单

我有一个使用VBA在MS Excel中构build的应用程序。 我原来通过密码保护了一些工作表和VBA项目。 我的用户只能在特定表单中的特定单元格上input和使用下拉菜单。 为了让我的VBA修改受保护的工作表,我必须取消保护工作表,然后使用密码重新保护它们。

现在项目的要求已经改变了,现在要求我在代码中不要有一个硬编码的string来保护和取消保护工作表。

在我的VBA代码中发生了什么的代码示例如下。

Worksheets("Loading").Unprotect ("****") [Functional Code] Worksheets("Loading").Protect ("****") 

考虑到我必须有密码才能访问VBA项目,是否有办法允许项目与受保护的表单交互,就好像它们不受保护一样?

如果不。 是否有另一种方法来阻止用户与表单交互,而不禁止VBA交互(非常隐藏不会为用户仍然需要查看工作表)。

注意:这需要防止具有最小技术能力的正常人以不应该的方式改变纸张

在不受保护的工作表上使用,

 Worksheets("Loading").Protect Password:=****, UserInterfaceOnly:=True 

有关完整的详细信息,请参阅Worksheet.Protect方法 。 一旦它被设置了这个额外的参数,并且工作簿已经被保存,保护将被任何VBA代码绕过,但保持在用于用户交互的位置。