Excel VBA:删除并添加允许用户编辑动态表的范围

时间:2016-01-23 05:50:52

标签: excel vba

我无法将工作表上的表添加到AllowEditRanges。我知道添加它的语法如下: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

1 个答案:

答案 0 :(得分:0)

在使用之前,

tbl被声明为ListObject但不是Set。因此错误。

在发表声明之前

Set tbl = ActiveSheet.ListObjects("Table1")

此外,

tbl本身就是ListObject,因此tbl.ListObject无效。

这样做:

With tbl ActiveSheet.Protection.AllowEditRanges.Add Title:="TableSort", Range:=.DataBodyRange End With