vba - 在 VBA 中为 protected Excel 工作表指定用户权限

标签 vba excel

我正在使用一个电子表格,为了数据完整性,在分发之前需要对其进行保护。我编写了一个基于下拉列表选择自动填充列的函数。我不希望用户编辑此列,因此我对其进行了保护,但是为了自动填充我的流程,取消保护并重新保护电子表格。这就是问题所在。

我希望用户拥有所有其他权限(例如格式化、行插入、行删除等)。但是,当进程重新保护工作表时,所有权限都将被撤销。

有没有办法既可以锁定工作表又可以指定我想在 VBA 中授予哪些用户权限?

最佳答案

Worksheet.Protect method允许指定执行 Review ► Changes ► Protect Worksheet 命令时可用的所有内容。这些参数在很大程度上是可选的,因此需要明确指定它们,或者可以使用逗号作为占位符传入空白参数。

要使用密码保护工作表并允许列格式和行插入:

With Worksheets("Sheet One")
    .Protect Password:="myPassword", Contents:=True, _
             AllowFormattingColumns:=True, AllowInsertingRows:=True
    'insert a row
    .Rows("9:9").EntireRow.Insert CopyOrigin:=xlFormatFromLeftOrAbove
End With

Worksheet.Protect method有关可用选项的完整列表。

另一个选项是 UserInterfaceOnly .这会阻止用户在工作表上执行预定操作,但允许 VBA 过程执行否则会受到限制的操作。
With Worksheets("Sheet One")
    .Protect Password:="myPassword", UserInterfaceOnly:=True, Contents:=True, _
                 AllowFormattingColumns:=True, AllowInsertingRows:=True
    'insert a column; the user cannot do this
    .Columns(2).EntireColumn.Insert CopyOrigin:=xlFormatFromLeftOrAbove
End With

后一种行为允许您在 VBA 过程中获得更多自由,而不必不断地取消保护和重新保护工作表。

关于vba - 在 VBA 中为 protected Excel 工作表指定用户权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35236492/

相关文章:

excel - 如何重新编写我的 VBA 以将复制的行粘贴到具有匹配值的单独工作表中的行上?

excel - 如何动态使用VBA将excel中的现有形状与直线链接

Excel VBA 从 TD 中提取数据

excel - 打开 Excel 工作簿时自动运行 VBA 代码

events - Excel VBA - 更新组合框时暂停事件

excel - Access VBA - 触发组合框更改事件

vba - 排除事件工作表

Excel VBA - 如果单元格是整数,则删除整行

vba - 如果然后在范围vba之间

excel - 如何使用 VBA for Excel for MacOS 创建文本文件