我有一个 Excel 表,我想在其中防止任何行被删除。我有这段代码实际上做了我想做的事情,但是一旦我运行宏,我就无法从任何 Excel 工作簿中删除任何行。
Sub DeleteRowsRestrictions()
Dim xBarControl As CommandBarControl
For Each xBarControl In Application.CommandBars.FindControls(ID:=293)
xBarControl.Enabled = False
Next
For Each xBarControl In Application.CommandBars.FindControls(ID:=294)
xBarControl.Enabled = False
Next
End Sub
有没有办法防止只从一个excel表中删除行?而不是像我的代码那样禁用删除所有 excel 工作簿中的行的宏?
谢谢 :)
最佳答案
不要重新发明轮子,这已经是 Excel 对象模型的一个特性。您可以通过保护它直接在工作表中执行此操作(不过我不会打扰密码,它很容易被殴打/哈希冲突):
以编程方式,这是通过 Worksheet.Protect
完成的。方法 - 您可以通过提供 Boolean
来控制启用的内容每个权限的值 - AllowDeletingRows
作为其中之一:
Sheet1.Protect Password:=vbNullString, _
DrawingObjects:=False, _
Contents:=False, _
Scenarios:=False, _
UserInterfaceOnly:=True, _
AllowFormattingCells:=True, _
AllowFormattingColumns:=True, _
AllowFormattingRows:=True, _
AllowInsertingColumns:=True, _
AllowInsertingRows:=False, _
AllowInsertingHyperlinks:=True, _
AllowDeletingColumns:=False, _
AllowDeletingRows:=False, _
AllowSorting:=True, _
AllowFiltering:=True, _
AllowUsingPivotTables:=True
以我的经验,仅保护就足以对绝大多数用户起到威慑作用;密码只会最终丢失/忘记,而且在 VBA 代码中硬编码密码是相当幼稚的,安全方面:工作表保护不是安全功能。
关于excel - 有没有办法限制使用 VBA 删除工作表中的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56495653/