假设您有一个数字数组,它们是您要删除的列号。一个明智的想法是将它们转换为字母,然后将它们连接起来并删除所有列,如here所示{@ 3}}。但是有一个问题,似乎字符串里面有一个上限,所以说
str = "AB:AB,CJ:CJ,CZ:CZ,NJ:NJ,NK:NK,NL:NL...",
Len(str)=300, 'Just about 50 columns, not too many indeed, there are 16384 columns in Excel 2010!!!
如果您使用Range(str).Delete Shift:=xlToLeft
,有可能会出现错误,如何解决此问题?
答案 0 :(得分:1)
另一个选择
Option Explicit
Public Sub DeleteColumns()
Dim i As Long, arr As Variant
arr = Split("3-5-7", "-") 'ascending order
Application.ScreenUpdating = False
With Sheet1
For i = UBound(arr) + 1 To LBound(arr) + 1 Step -1
.Cells(Val(arr(i - 1))).EntireColumn.Delete
Next
End With
Application.ScreenUpdating = True
End Sub
(对于大量列来说速度很慢)