2016-01-23 170 views
0

我在將工作表上的表格添加到AllowEditRanges時遇到問題。我知道添加它的語法如下所示:ActiveSheet.Protection.AllowEditRanges.Add Title:="Range1", Range:=Range("Table1353"),但我將定期創建新的工作表,並且每個工作表都有一個表。我需要它來抓住工作表上的表格並添加它。不知道下面的代碼是否是這樣做的,但是我在代碼行ActiveSheet.Protection.AllowEditRanges.Add Title:="TableSort", Range:=.DataBodyRange - 「對象變量並且未設置塊變量」時出現調試錯誤。任何指導將不勝感激。Excel VBA:刪除並添加允許用戶編輯動態表格的範圍

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 

回答

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

+0

感謝。我更新了代碼,我仍然得到調試錯誤行'ActiveSheet.Protection.AllowEditRanges.Add標題:=「TableSort」,範圍:=。DataBodyRange'。我試圖避免調用表名。我不想每次創建新表時都要更改宏。我應該爲此做一個For Each語句嗎?我試過了,我仍然得到該行的調試錯誤。謝謝。 – DigitalSea

+0

即使工作表中只有一個表,您也可以使用'Set tbl = ActiveSheet.ListObjects(1)' – PankajR