>我锁定了一个电子表格,以便用户无法修改单元格值,但可以运行 VBA 宏进行计算。我的代码是这样的:
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Protect "Password", UserInterfaceOnly:=True
Next
Other_function()
End Sub
这工作正常,防止用户修改单元格,但允许此示例工作:
Private Sub CommandButton1_Click()
Worksheets(1).Range("A20").Value = "AAA"
End Sub
但是,当我尝试向表中添加行时,出现 1004 错误:
Dim ws As Worksheet
Dim tbl As ListObject
Set ws = Worksheets("SecondSheet")
Set tbl = ws.ListObjects("TableName")
Dim newrow As ListRow
Set newrow = tbl.ListRows.Add
With newrow
.Range(1) = onevalue
.Range(2) = twovalue
.Range(3) = threevalue
...
End With
如何告诉 Excel 我需要在此表中放置新行,而不会每次都取消保护整个内容?
您不能只接受VBA来执行此操作,您必须在进行操作之前取消保护工作表,然后在之后重新保护它。
您可以使用 AllowInsertingColumns 或 AllowDeletingColumns 在受保护工作表中添加/删除列,但如果这样做,您将接受脚本和用户插入或删除列。
允许插入列和允许删除列的源。
遗憾的是,保护工作表不允许在表中添加或删除行。您必须取消对工作表的保护。