我写了一个宏来做多件事,最后想要删除20多列 我使用下面的语句来执行它,但它给了我一个运行时错误。看起来一次可以删除多少列的限制。
我录制了一个宏来删除以下所有列,似乎excel将range语句拆分为多个但是当我使用它时,它似乎不起作用。请告诉我删除这么多列的最简单方法是什么。感谢
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
答案 0 :(得分: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
似乎它应该适用于您的目的,如果没有,请留下评论澄清您的问题。
答案 1 :(得分:2)
传递给range属性的地址字符串不能超过255个字符。你可以缩短你的时间,因为有些列是相邻的-eg使用T:X而不是T:T,U:U,V:V,W:W,X:X.如果字符串仍然太长,您将需要创建单独的范围并将它们联合起来,或者在几个步骤中执行删除。