在Excel中锁定单元格,但仍允许显示/隐藏

时间:2015-07-02 16:20:44

标签: excel vba excel-vba

我正在制作一张excel表。 Excel工作表将根据在不同单元格中选择的内容显示或隐藏某些行。例如(伪)。

如果B6 ="是",则显示第7行,否则隐藏第7行。

我想锁定单元格以便它们不能更改标题和标题,但仍能在某些情况下隐藏行。当单元格被锁定时,我的VBA代码无法隐藏或取消隐藏行。

任何帮助将不胜感激;我已经找到了答案,但没有找到我的具体情况。

2 个答案:

答案 0 :(得分:3)

这是我已经创建了一段时间来锁定所有内容的例程,但允许尽可能多的功能。您可以根据需要编辑参数。跑完之后,我能够隐藏一行。

Sub ProtectSheetsNoPassword()
    Dim wb As Workbook
    Dim ws As Worksheet
    Set wb = ActiveWorkbook
    For Each ws In wb.Worksheets
        ws.Protect DrawingObjects:=True, _
                    Contents:=True, _
                    Scenarios:=True, _
                    AllowFormattingCells:=True, _
                    AllowFormattingColumns:=True, _
                    AllowFormattingRows:=True, _ 
                    AllowInsertingColumns:=True, _
                    AllowInsertingRows:=True, _
                    AllowInsertingHyperlinks:=True, _
                    AllowDeletingColumns:=True, _
                    AllowDeletingRows:=True, _
                    AllowSorting:=True, _
                    AllowFiltering:=True, _
                    AllowUsingPivotTables:=True
        'ws.Unprotect 'Uncomment if you want to unprotect the sheets
    Next
End Sub

AllowFormattingRows:=True参数是您需要关注的隐藏行的参数。

答案 1 :(得分:2)

保护工作表时,您可以指出用户应该做什么以及不能做什么。我相信以下代码将实现您的目标:

Sheet1.Protect Password:="yourPassword", DrawingObjects:=True, Contents:=True, Scenarios:=True _
    , AllowFormattingCells:=True, AllowFormattingColumns:=True, _
    AllowFormattingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
    AllowUsingPivotTables:=True, UserInterfaceOnly:=True