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

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

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

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

但问题是:

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

完整故事:

我有一个想要共享的 Excel 文件。其中有一些隐藏的列,我不希望任何人取消隐藏。但另一方面,有 2 列我希望以某种方式受到保护,以便某些用户可以查看(取消隐藏)它们。

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

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

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

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

答案1

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

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

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

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

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

答案2

我遇到了类似的问题,并使用数据分组来分离分组行(我允许用户展开)和隐藏行(无法取消隐藏)。保护工作表而不允许用户格式化会导致隐藏行无法取消隐藏。通过以下代码允许扩展列分组:

Dim wSheet as Worksheet

For Each wSheet In ThisWorkbook.Worksheets
      wSheet.Protect Password:="Password", UserInterFaceOnly:=True
      wSheet.EnableOutlining = True
Next

相关内容