保护和隐藏与 "Very Hidden" 工作表相同的列
Protecting and Hiding Columns same as "Very Hidden" Sheets
我试图隐藏一些列并阻止用户访问它们;而他们可以编辑 sheet.
的其他部分
我正在寻找的是这样的:
ActiveWorkbook.Sheets("Name").Visible = xlSheetVeryHidden
所以用户看不到它们。我知道一个选项是添加另一个 sheet 并将这些列移到那里并隐藏那个 sheet;但是由于我正在处理一个相对较大的数据集并且它在公司内部有一个标准格式,所以我不想这样做。
我已经尝试锁定列并保护 sheet 并选中除 select 锁定单元格之外的所有框,插入和删除行和列(代码如下)。
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 包含这些隐藏和锁定列的范围并取消隐藏它们。是否有任何方法或技巧,如 VeryHidden
for sheets 可用于范围?
原答案:
如果用户不需要格式化列和行,那么有一个解决方法:
如果 AllowFormattingColumns
和 AllowFormattingRows
为 false(如果未说明则为默认值),则用户将无法隐藏或取消隐藏它们。
更新:
下面的函数“非常隐藏”了基于上述想法的列;
Function VeryHideColumn(myColumn As Range)
'By M--, 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。
我试图隐藏一些列并阻止用户访问它们;而他们可以编辑 sheet.
的其他部分我正在寻找的是这样的:
ActiveWorkbook.Sheets("Name").Visible = xlSheetVeryHidden
所以用户看不到它们。我知道一个选项是添加另一个 sheet 并将这些列移到那里并隐藏那个 sheet;但是由于我正在处理一个相对较大的数据集并且它在公司内部有一个标准格式,所以我不想这样做。
我已经尝试锁定列并保护 sheet 并选中除 select 锁定单元格之外的所有框,插入和删除行和列(代码如下)。
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 包含这些隐藏和锁定列的范围并取消隐藏它们。是否有任何方法或技巧,如 VeryHidden
for sheets 可用于范围?
原答案:
如果用户不需要格式化列和行,那么有一个解决方法:
如果 AllowFormattingColumns
和 AllowFormattingRows
为 false(如果未说明则为默认值),则用户将无法隐藏或取消隐藏它们。
更新:
下面的函数“非常隐藏”了基于上述想法的列;
Function VeryHideColumn(myColumn As Range)
'By M--, 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。