允许用户仅取消隐藏(格式化)选定的列

xch*_*hru 5 passwords vba microsoft-excel

TL; DR,我想要实现的目标:

  • 隐藏一些我不想向任何人显示的列(检查)
  • 隐藏我只想向某些用户显示的一些列(选中)
  • 为两个列组设置单独的密码(一个我不会透露,另一个我会透露给选定的用户)(取消选中)

但问题是:

  • 如果我在保护整个工作表的级别上选中“允许所有用户格式化列”,则任何人都可能会取消隐藏所有列
  • 如果我为范围设置密码(“允许用户编辑范围”),而“允许所有用户设置列格式”未选中,则在不知道高级密码的情况下无法取消隐藏任何列(这也保护了我不想要的列向任何人展示)

完整故事:

我有一个excel文件,我想分享。有某些隐藏的列,我不希望任何人取消隐藏。但另一方面,我希望以某些用户能够查看(取消隐藏)它们的方式保护 2 列。

我已经深入研究了保护工作表,让用户可以访问范围等,但我无法找到隐藏/取消隐藏列的解决方案。

我尝试隐藏所有列(我希望永久隐藏的列和我希望某些用户不隐藏的列)并为工作表编辑设置密码。然后,我想我会为编辑范围设置一个单独的密码(我选择了我想要的列)。但是,仍然无法取消隐藏单独的范围(由我想通过向某些用户提供此特定范围的密码来向他们显示的列组成)。

所以我尝试在整个工作表的级别上实现一些东西,发现有属性“允许所有用户..”->“格式化列”。但是,所有用户都可以取消隐藏所有列(我只希望他们能够取消隐藏我选择的列)。

顺便说一句,我使用 Excel 2007。

Ray*_*ian 2

我将隐藏的单元格放在另一张纸上并通过 VBA 保护它,例如:

Sheets("sheet4").Visible = xlVeryHidden 或者

Worksheets("sheet1").protect "Password", UserInterfaceOnly:=True或者

ActiveSheet.protect "Password", AllowFormattingRows:=True, AllowFormattingColumns:=True

或者其他方法。xlveryhidden是一个很好的起点,然后锁定 UI 并访问 VBA