簡體   English   中英

Excel - VBA:Worksheet.Range.Delete是否有列數限制?

[英]Excel - VBA: does Worksheet.Range.Delete have a columns number limitation?

我有一個簡單的行刪除一些目標列的問題。 我多次使用這樣的一行,但這是我第一次遇到錯誤。 事實是它看起來很多列,因為當我在引號中刪除其中的一些(大約10個)時,我不再有錯誤了。 那么這是否意味着VBA對某個范圍內的列數有限制?

MyWorksheet.Range("Q:Q,R:R,S:S,T:T,U:U,V:V,W:W,X:X,Y:Y,Z:Z,AA:AA,AB:AB,AC:AC,AD:AD,AE:AE,AF:AF,AG:AG,AH:AH,AJ:AJ,AL:AL,AN:AN,AP:AP,AR:AR,AT:AT,AV:AV,AX:AX,AZ:AZ,BB:BB,BD:BD,BH:BH,BJ:BJ,BL:BL,BN:BN,BP:BP,BR:BR,BT:BT,BV:BV,BX:BX,BZ:BZ,CB:CB,CF:CF,CH:CH,CJ:CJ,CN:CN,CP:CP,CR:CR,CT:CT").Delete Shift:=xlToLeft 

這些列來自一個字符串列表,所以我知道我可以做一個For循環並逐個刪除。

我是Stack Overflow的新手而不是英國人,如果我犯了任何錯誤,那就很抱歉。

編輯:

最初,我使用字典來存儲一些特定的列,然后我用一些comas聚合字典項並將變量放在我的范圍內。

For i = 1 To ColToDeleteArray.Count
    If ColToDeleteArray.Exists(i) Then
        ColToDeleteString = ColToDeleteString & ColToDeleteArray(i) & ":" & ColToDeleteArray(i) & ","
    End If
Next i

ColToDeleteString = Left(ColToDeleteString, Len(ColToDeleteString) - 1)
MyWorksheet.Range(ColToDeleteString).Delete Shift:=xlToLeft

考慮:

Sub hfsjdfh()
    Dim s As String, r As Range
    s = "Q:Q,R:R,S:S,T:T,U:U,V:V,W:W,X:X,Y:Y,Z:Z,AA:AA,AB:AB,AC:AC,AD:AD,AE:AE,AF:AF,AG:AG,AH:AH,AJ:AJ,AL:AL,AN:AN,AP:AP,AR:AR,AT:AT,AV:AV,AX:AX,AZ:AZ,BB:BB,BD:BD,BH:BH,BJ:BJ,BL:BL,BN:BN,BP:BP,BR:BR,BT:BT,BV:BV,BX:BX,BZ:BZ,CB:CB,CF:CF,CH:CH,CJ:CJ,CN:CN,CP:CP,CR:CR,CT:CT"
    arr = Split(s, ",")
    For Each a In arr
        If r Is Nothing Then
            Set r = Range(a)
        Else
            Set r = Union(r, Range(a))
        End If
    Next a
    MsgBox r.Address(0, 0)
End Sub

在此輸入圖像描述

  • 因此,即使字符串對於Range對象來說太長也無法處理,它仍然可以通過Union()
  • 一旦創建了范圍,它的地址與原始字符串相比有些緊湊。

您可以考慮反向迭代ColToDeleteArray並單獨刪除列。

For i = ColToDeleteArray.count To 1 Step -1
    If ColToDeleteArray.Exists(i) Then
        Range(ColToDeleteArray(i) & ":" & ColToDeleteArray(i)).Delete shift:=xlToLeft
    End If
Next i

哦,直接回答標題問題,不,使用range.delete命令刪除的列數沒有限制。 例如

[A:XFD].Delete

將刪除所有列(Excel 2007-2016)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM