Excel 保护和隐藏列与“相同”;“非常隐蔽”;希茨

Excel 保护和隐藏列与“相同”;“非常隐蔽”;希茨,excel,vba,show-hide,protection,Excel,Vba,Show Hide,Protection,我试图隐藏一些列并阻止用户访问它们;而他们可以编辑图纸的其他部分 我所追求的是: ActiveWorkbook.Sheets("Name").Visible = xlSheetVeryHidden 所以用户无法看到它们。我知道一个选项是添加另一张表,并将这些列移动到那里,然后隐藏这张表;但是,由于我正在处理一个相对较大的数据集,而且它在公司内部有一个标准格式,所以我不愿意这样做 我已经尝试过锁定列和保护工作表,并选中所有框,除了用于选择锁定单元格、插入和删除行和列的框(代码如下) 这就是问题

我试图隐藏一些列并阻止用户访问它们;而他们可以编辑图纸的其他部分

我所追求的是:

ActiveWorkbook.Sheets("Name").Visible = xlSheetVeryHidden 
所以用户无法看到它们。我知道一个选项是添加另一张表,并将这些列移动到那里,然后隐藏这张表;但是,由于我正在处理一个相对较大的数据集,而且它在公司内部有一个标准格式,所以我不愿意这样做

我已经尝试过锁定列和保护工作表,并选中所有框,除了用于选择锁定单元格、插入和删除行和列的框(代码如下)

这就是问题所在:用户仍然可以选择一个包含这些隐藏和锁定列的区域并取消隐藏它们。对于可用于范围的工作表,是否有任何方法或技巧,如
VeryHidden

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

如果
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

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