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

fjaof16o  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(128)

我试图隐藏一些列,并防止用户有任何访问他们;而他们可以编辑工作表的其他部分。
我所追求的是这样的:

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

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

7xzttuei

7xzttuei1#

原始答案:

如果用户不需要格式化列和行,那么有一个解决方案:
如果AllowFormattingColumnsAllowFormattingRows为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。

相关问题