我用下面的代码来锁定某些细胞VBA的Excel - 如何锁定特定的细胞,但允许过滤和排序
Sub LockCell(ws As Worksheet, strCellRng As String)
With ws
.Unprotect
.Cells.Locked = False
.Range(strCellRng).Locked = True
.Protect Contents:=True, AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows:=True, AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True, DrawingObjects:=True
End With
End Sub
它运作良好,锁定那些特定列的内容的内容。问题在于,在电子表格本身上工作时,用户无法对滤镜进行排序,也无法将边框应用于单元格,因为这些Excel菜单项已禁用。我认为AllowSorting:=True
,AllowFiltering:=True
和DrawingObjects:=True
将允许与AllowFormattingColumns:=True
和AllowFormattingRows:=True
允许调整大小相同的方式。
非常感谢您的帮助。
问候, 罗纳德
我建议你重新阅读Excel工作表Proptect的帮助文件,特别是关于_Allow_参数保护_worksheets_和locked_cells_。 AllowSorting:“排序范围内的每个单元格必须解锁或不受保护”AllowFiltering:“用户可以更改过滤条件,但不能启用或禁用自动过滤器” – 2012-04-17 19:43:36
谢谢,虽然这很让人伤心,因为我需要能够阻止某些内容,但允许用户排序和过滤。有任何想法吗? – 2012-04-17 22:13:42
1.)确保你的范围不与其他范围重叠。 2)解锁表格中的所有单元格,然后将锁定应用于范围。 3.)“当表单受到保护时,必须解锁要过滤的单元格。” ...所以只是不要将这些'过滤器单元'作为锁定范围的一部分。 https://msdn.microsoft.com/en-us/library/office/ff839866.aspx – 2016-06-29 17:28:22