簡體   English   中英

運行時錯誤'1004'-刪除行時對象'_Global'的方法'Range'失敗

[英]Run-time error '1004' - Method 'Range' of object'_Global' failed while deleting rows

我正在嘗試一次刪除工作表中的每個奇數行,但它返回上述錯誤

碼:

For icount = endRow To 3 Step -2
    strDelete = strDelete & "," & icount & ":" & icount
Next icount

strDelete = Right(strDelete, Len(strDelete) - 1)
Range(strDelete).Delete shift:=xlUp        '<-- Error

這就是strDelete包含的內容

7565:7565,7563:7563,7561:7561,7559:7559,7557:7557,7555:7555,7553:7553,7551:7551,7549:7549,7547:7547,7545:7545,7543:7543,

,29:29,27:27,25:25,23:23,21:21,19:19,17:17,15:15,13:13,11:11,9:9,7:7,5 :5,3:3

我們可以一次刪除的行數是否有限制?

可以刪除的行數沒有限制,但是Range.Address屬性可以返回(或在本例中通過其索引器)可以返回的字符數沒有限制。 而不是構建字符串,而是使用Union構建實際范圍:

Dim toDelete As Range
For i = endRow To 3 Step -2
    If toDelete Is Nothing Then
        Set toDelete = Rows(i)
    Else
        Set toDelete = Union(toDelete, Rows(i))
    End If
Next
toDelete.Delete shift:=xlUp

我認為您一直在避免使用Union()方法,因為這很耗時

或者也許你沒有去過

無論如何,這耗時,並且當您要刪除大量行時, 必須使用Range方法

正如已經指出的,限制是要傳遞給Range()方法的字符串的長度,似乎必須限制為大約250個字符(可能是256個...)

因此,讓我們使用Range方法來正確輸入縮短的字符串

For icount = endRow To 3 Step -2
    strDelete = strDelete & "," & icount & ":" & icount
Next icount

DeleteAddress Right(strDelete, Len(strDelete) - 1)

Sub DeleteAddress(ByVal address As String)
    Dim arr As Variant
    Dim iArr As Long
    Dim partialAddress As String

    arr = Split(address, ",")
    iArr = LBound(arr)
    Do While iArr < UBound(arr)
        partialAddress = ""
        Do While Len(partialAddress & arr(iArr)) + 1 <= 250 And iArr < UBound(arr)
            partialAddress = partialAddress & arr(iArr) & ","
            iArr = iArr + 1
        Loop
        If Len(partialAddress & arr(iArr)) <= 250 Then
            partialAddress = partialAddress & arr(iArr)
            iArr = iArr + 1
        Else
            partialAddress = Left(partialAddress, Len(partialAddress) - 1)
        End If
        Range(partialAddress).Delete shift:=xlUp
    Loop
End Sub

這比帶有7k行的Union()方法要快得多

暫無
暫無

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

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