首页 文章

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

提问于
浏览
2

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

我正在寻求的是:

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 这样的方法或技巧?

1 回答

  • 2

    原文答案:

    如果用户不需要格式化列和行,那么可以解决这个问题:

    如果 AllowFormattingColumnsAllowFormattingRows 为假(如果未说明则为默认值),则用户将无法隐藏或取消隐藏它们 .

    更新:

    下面的功能“非常隐藏”基于上述想法的列;

    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 .

相关问题