0

我写了一个宏来做很多事情,最后想删除 20 多列。
我使用下面的语句来执行它,但它给了我一个运行时错误。您一次可以删除多少列似乎是有限制的。

我录制了一个宏来删除以下所有列,似乎 excel 将范围语句拆分为多个,但是当我使用它时,它似乎不起作用。请让我知道删除这么多列的最简单方法是什么。谢谢

Range("A:A,C:C,D:D,E:E,F:F,J:J,L:L,M:M,O:O,Q:Q,R:R,T:T,U:U,V:V,W:W,X:X,Z:Z,AA:AA,AB:AB,AC:AC,AD:AD,AE:AE,AG:AG,AI:AI,AK:AK,AL:AL,AN:AN,AO:AO,AP:AP,AQ:AQ,AR:AR,AT:AT,AU:AU, AV: AV , AW: AW , AX: AX , AY: AY , AZ: AZ , BA: BA , BB: BB , BC: BC , BD: BD , BE: BE , BF: BF , BG: BG , BH: BH, BI:     BI , BJ: BJ , BK: BK , BM: BM , BN: BN , BP: BP , BQ: BQ , BR: BR , BS: BS , BU: BU , BV: BV , BW: BW , BX: BX , BY: BY , CA: CA, CB:     CB , CC: CC , CE: CE ").Select
Range("CE1").Activate
Selection.Delete Shift:=xlToLeft
4

2 回答 2

3
With Sheets(shtname)
        .Columns(Range("A").Select).EntireColumn.Delete
        .Columns(Range("C:F,J,L,M,O").Select).EntireColumn.Delete
        .Columns(Range("Q:R, T:X").Select).EntireColumn.Delete
        .Columns(Range("Z:AE,AI,AK:AL,AN:AR,AT:BK").EntireColumn.Delete
' complete your range in the same way and you should be sorted
End With

似乎它应该适合您的目的,如果没有,请发表评论以澄清您的问题。

于 2013-06-04T22:18:14.150 回答
2

传递给 range 属性的地址字符串不能超过 255 个字符。您可以缩短您的,因为某些列是相邻的 - 例如使用 T:X 而不是 T:T,U:U,V:V,W:W,X:X。如果字符串仍然太长,您将需要创建单独的范围并将它们合并,或者通过几个步骤执行删除。

于 2013-06-04T22:17:36.673 回答