列的1004删除范围失败

时间:2017-12-11 18:41:20

标签: excel-vba vba excel

所以,我希望从表格中同时删除一堆列但是我得到了运行时错误' 1004&#39 ;:删除范围方法失败。我的床单没有受到保护,但我希望删除的表格是一张桌子。我搜索过很多例子,但他们还没有纠正这些问题,似乎都会产生同样的错误。这就是我所拥有的:

Sub Table_Creator()

Worksheets("Sheet2").Cells.Copy
Worksheets("Sheet3").Range("A1").Select  'cause some times excel hates me unless I use this
Worksheets("Sheet3").Paste

Dim rng As Range

Set rng = Worksheets("Sheet3").Range("A:R").Columns 

Sheet3.ListObjects.Add(xlSrcRange, rng, , xlYes).Name = "ComTable"

Application.EnableEvents = False

Range("A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:Q").EntireColumn.Delete Shift:=xlToLeft  'errors on this line with the aforementioned error

Application.EnableEvents = True

Worksheets("Sheet3").AutoFit

End Sub

那我错过了什么?我添加了一些我不应该拥有的东西吗?

2 个答案:

答案 0 :(得分:0)

来自范围的问题(“A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:Q”)。EntireColumn。这不是一个正确的符号。

您列出了列的范围,但可以使用带有步骤-2的循环来获取它们并首先指定分组列(O:Q):

Dim i as Long
Range(Columns("O"), Columns("Q")).Delete Shift:=xlToLeft
For i = 13 to 1 Step -2 'Where 13 = "L" and 1 = "A"
    Columns(i).Delete Shift:=xlToLeft
Next i

答案 1 :(得分:0)

另一种方法,根据JohnyL的评论。我将“O:Q”解释为“O,R”,但如果错误则代码需要稍作修改。

(1, 2)
(7, 6)
(8, 9)