excel - 有没有办法限制使用 VBA 删除工作表中的行?

标签 excel vba rows

我有一个 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 对象模型的一个特性。您可以通过保护它直接在工作表中执行此操作(不过我不会打扰密码,它很容易被殴打/哈希冲突):

Protect Sheet dialog

以编程方式,这是通过 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/

相关文章:

excel - 使用 VBA Selenium 从 Web 抓取日期内容时日期格式错误的问题

excel - VBA防止另一个更改事件触发时触发更改事件

pandas - 如何在数据框中创建新列并将它们全部分配为 0?

excel - 在VBA中将列号转换为列字母

python:创建excel工作簿并将csv文件转储为工作表

excel - 试图了解在 Range 对象上使用 Item 属性和 Cells 属性之间的区别

javascript - "Click"一个带有VBA的javascript按钮

vba - 当下面有其他不同宽度的表格时,使用 VBA 向 Excel 表格添加新行

mysql - 触发器在 mysql 中的同一个表中复制行以获取类时间表

python - 为 numpy 数组中的整行赋值