我已锁定电子表格,以便用户无法修改单元格值,但我可以运行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我需要在此表中添加新行而不是每次都不保护整个事物?
答案 0 :(得分:1)
您不能只接受VBA这样做,您必须在执行操作之前取消保护工作表并在之后重新保护它。
您可以允许使用 AllowInsertingColumns 或 AllowDeletingColumns 在受保护的工作表中添加/删除列,但如果您这样做,则会接受脚本并且用户要插入或删除列。
答案 1 :(得分:0)
不幸的是,保护工作表不允许向表中添加行或从表中删除行。你必须取消保护表。