2013-06-04 160 views
0

我寫了一個宏來做多件事情,最後想要刪除20多列。
我用下面的語句來執行它,但它給我一個運行時錯誤。看起來您一次可以刪除多少列。在excel vba中刪除超過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 

回答

2

您傳遞給range屬性的地址字符串不能超過255個字符。你可以縮短你的,因爲一些列是相鄰的 - 例如使用T:X而不是T:T,U:U,V:V,W:W,X:X。如果字符串仍然太長,則需要創建單獨的範圍併合並它們,或者在幾個步驟中執行刪除操作。

+0

是否有我需要遵循的聯合的特定語法? – user2453587

+0

這將是'union(範圍(「a:d,f:h」),範圍(「y:aa,ad:bq」))。wholecolumn.delete例如 – JosieP

+0

感謝傢伙的幫助。 (「A」,C:F,J:J,L:範圍(「Q:R,T:X」),範圍(「Z:AE,AG:AG」),範圍(「AI:AI,AK:AL,AN:AR,AT :「BK」),範圍(「BM:BN,BP:BS,BU:BY」),範圍(「CA:CC,CE:CE」))選擇範圍(「CE1」)激活Selection.Delete Shift: = xlToLeft – user2453587

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 

似乎應該爲你的目的工作,如果沒有,就發表評論澄清你的問題。

+0

我給了他一個開始,我想他會喜歡整個解決方案,儘管... – hd1

+0

只是爲了避免不可避免的回帖,「它沒有做我想做的事!」。刪除了我的舊評論,因爲它現在錯過了領先...... + 1沒有。 – sous2817

+0

沒問題,matey ... :) – hd1