我试图隐藏一些列并阻止用户访问它们;他们可以编辑工作表的其他部分。
我所寻求的是:
ActiveWorkbook.Sheets("Name").Visible = xlSheetVeryHidden
因此用户无法看到它们。我知道一个选项是添加另一个工作表并将这些列移动到那里并隐藏一个工作表;但由于我正在处理一个相对较大的数据集并且它在公司内部采用标准格式,我宁愿不这样做。
我已经尝试锁定列并保护工作表并检查除了选择锁定单元格,插入和删除行和列(下面的代码)之外的所有框。
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
这是问题所在:用户仍然可以选择包含这些隐藏和锁定列的范围并取消隐藏它们。对于可用于范围的工作表,是否有任何类似VeryHidden
的方法或技巧?
答案 0 :(得分:2)
如果用户不需要格式化列和行,那么可以解决这个问题:
如果AllowFormattingColumns
和AllowFormattingRows
为假(如果没有说明,则为默认值),则用户将无法隐藏或取消隐藏它们。
以下功能"非常隐藏"只有基于上述想法的专栏;
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。