Excel VBA:删除和添加允许用户编辑';动态的
将工作表上的表添加到AllowEditRanges时遇到问题。我知道这样添加它的语法:Excel VBA:删除和添加允许用户编辑';动态的,excel,vba,Excel,Vba,将工作表上的表添加到AllowEditRanges时遇到问题。我知道这样添加它的语法:ActiveSheet.Protection.AllowEditRanges.add Title:=“Range1”,Range:=Range(“Table1353”),但我会定期创建新工作表,每个工作表都有一个表。我需要它抓住工作表上的表格并添加它。不确定下面的代码是否是执行此操作的方法,但我在代码行ActiveSheet.Protection.AllowEditRanges.Add Title:=“Tabl
ActiveSheet.Protection.AllowEditRanges.add Title:=“Range1”,Range:=Range(“Table1353”)
,但我会定期创建新工作表,每个工作表都有一个表。我需要它抓住工作表上的表格并添加它。不确定下面的代码是否是执行此操作的方法,但我在代码行ActiveSheet.Protection.AllowEditRanges.Add Title:=“TableSort”,Range:=.DataBodyRange
-“未设置对象变量和块变量”。请提供任何指导
Sub AddNewAER()
Dim aer As AllowEditRange
Dim tbl As ListObject
Dim sh As Worksheet
Set sh = ThisWorkbook.ActiveSheet
On Error Resume Next
On Error GoTo 0
For Each aer In ActiveSheet.Protection.AllowEditRanges
aer.Delete
Next aer
With tbl
ActiveSheet.Protection.AllowEditRanges.Add Title:="TableSort", Range:=.DataBodyRange
End With
End Sub
tbl
在使用前声明为ListObject,但不声明为Set
。因此出现了错误
Set tbl=ActiveSheet.ListObjects(“Table1”)
before with语句
而且
tbl
本身就是ListObject,因此tbl.ListObject
将不起作用
这样做:
带tbl
ActiveSheet.Protection.AllowEditRanges.Add标题:=“表排序”,范围:=.DataCodeRange
以
结束,谢谢。我通过代码进行了更新,但在第ActiveSheet.Protection.AllowEditRanges.addtitle:=“TableSort”,Range:=.DataBodyRange
行中仍然出现调试错误。我试图避免调用表名。我不想每次创建新表时都更改宏。我应该为每一个陈述做一个分析吗?我试过了,但还是在那一行出现了调试错误。谢谢。因为工作表中只有一个表,所以可以使用Set tbl=ActiveSheet.ListObjects(1)