我已经为数据输入创建了一个表。但是,当用户使用它时,它们会在表的中间插入行。这就把公式搞砸了,因为这些函数的设计只是向前推进。此外,有时当用户手动添加行时(只需在表的最后一行之后键入下一行),函数就会自动填充,但函数经常不正确。
因此,我添加了一个按钮来将行添加到表中,这样做没有问题。现在我想禁用用户手动添加行的能力,这意味着只有单击按钮才能添加行。
据我研究,人们都建议使用保护表功能。但它将删除所有添加行的功能,包括通过VBA添加行。另一些则提供VBA,它只允许通过右键单击行列插入行。我需要禁用所有用户访问的方式。
这是按钮的代码(如果相关的话)。
Sub InsertRow_Click()
Dim i As Integer
For i = 1 To 10
ActiveSheet.ListObjects("Invoice").ListRows.Add alwaysinsert:=True
Next i
End Sub
发布于 2018-05-23 09:42:14
当使用工作表保护时,您可以添加Userinterfaceonly= true,这将防止用户的干扰,但是VBA代码仍然可以工作。
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Protect Password:="secret", UserInterFaceOnly:=True
Next ws
End Sub
或者你只想保护一张纸:
Private Sub Workbook_Open()
Worksheets("YourSheetName").Protect Password:="secret", UserInterFaceOnly:=True End Sub
或者在运行宏之前先去掉保护,然后再打开它:
Sub InsertRow_Click()
ActiveSheet.Unprotect Password:="secret"
Dim i As Integer
For i = 1 To 10
ActiveSheet.ListObjects("Invoice").ListRows.Add alwaysinsert:=True
Next i
ActiveSheet.protect Password:="secret"
End Sub
用户界面和表看起来不太匹配
https://stackoverflow.com/questions/50482822
复制相似问题