保护和隐藏与“非常隐藏”表单相同的列

我试图隐藏一些列,并阻止用户有任何访问他们; 同时他们可以编辑工作表的其他部分。

我正在寻找的东西是这样的:

ActiveWorkbook.Sheets("Name").Visible = xlSheetVeryHidden 

所以用户不能看到他们。 我知道有一个select是添加另一个工作表并将这些列移动到那里并隐藏该工作表。 但是由于我正在研究一个相对较大的数据集,并且在公司内部有一个标准格式,我宁愿不这样做。

我已经尝试locking列和保护工作表,并检查除了用于selectlocking单元格,插入和删除行和列(下面的代码)的所有框。

 Function VeryHideColumn(myColumn As Range) myColumn.Locked = True myColumn.FormulaHidden = True myColumn.Hidden = True 'myColumn.Hidden = xlVeryHidden 'I already tried this ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _ False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _ AllowFormattingRows:=True, AllowInsertingHyperlinks:=True, AllowSorting:= _ True, AllowFiltering:=True, AllowUsingPivotTables:=True ActiveSheet.EnableSelection = xlUnlockedCells End Function 

这是问题:用户仍然可以select一个包含这些隐藏和locking列的范围,并取消隐藏。 有什么方法或窍门像VeryHidden工作表可用范围?

原始答案:

如果用户不需要格式化列和行,那么有一个解决方法:

如果AllowFormattingColumnsAllowFormattingRows为false(如果没有说明则默认),那么用户将无法隐藏或取消隐藏它们。

更新:

下面的函数“很隐藏”只是基于上述想法的列;

 Function VeryHideColumn(myColumn As Range) 'By Masoud, April 2017 myColumn.Locked = True myColumn.Hidden = xlVeryHidden myColumn.FormulaHidden = True ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _ False, AllowFormattingCells:=True, AllowFormattingRows:=True, _ AllowInsertingHyperlinks:=True, AllowSorting:=True, AllowFiltering:=True _ , AllowUsingPivotTables:=True End Function 

如果您想隐藏行,请将AllowFormattingRows设置为false。