【问题标题】:Protecting and Hiding Columns same as "Very Hidden" Sheets保护和隐藏列与“非常隐藏”的工作表相同
【发布时间】:2017-04-28 17:51:06
【问题描述】:

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

我正在寻找的是这样的:

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 用于范围可用的工作表?

【问题讨论】:

    标签: excel vba show-hide protection


    【解决方案1】:

    原答案:

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

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

    更新:

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

    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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-05
      相关资源
      最近更新 更多