我正在編寫一個宏,該宏刪除使用公式找到的值中小於.75的所有行。在另一個線程中,在這裏,我發現了一個可以工作的循環,但是這需要花費很多時間來運行...所以我試圖找到沒有循環的方式。到目前爲止,我有如下所示的代碼,但我上線刪除沒有符合特定條件的循環的行
ws.Range(Left(rowsToDelete, Len(rowsToDelete) - 1)).Select
任何人有一個校正任何想法得到一個「運行時錯誤1004,方法‘工作表對象的範圍’失敗」?所有的幫助表示讚賞
Private Sub CommandButton6_Click()
Application.ScreenUpdating = False
Dim ws As Worksheet
Dim i&, lr&, rowsToDelete$, lookFor$, lookFor2$
'*!!!* set the condition for row deletion
lookFor = "#VALUE!"
lookFor2 = "0.75"
Set ws = ThisWorkbook.Sheets("Entry")
lr = ws.Range("H" & Rows.Count).End(xlUp).row
ReDim arr(0)
For i = 1 To lr
If StrComp(CStr(ws.Range("H" & i).Text), lookFor, vbTextCompare) = 0 Or _
CDbl(ws.Range("H" & i).Value) < CDbl(lookFor2) Then
ReDim Preserve arr(UBound(arr) + 1)
arr(UBound(arr) - 1) = i
End If
Next i
If UBound(arr) > 0 Then
ReDim Preserve arr(UBound(arr) - 1)
For i = LBound(arr) To UBound(arr)
rowsToDelete = rowsToDelete & arr(i) & ":" & arr(i) & ","
Next i
ws.Range(Left(rowsToDelete, Len(rowsToDelete) - 1)).Select
Selection.Delete Shift:=xlUp
lr = ws.Range("A" & Rows.Count).End(xlUp).row
ws.Range(lr & ":" & lr).Select
Else
Application.ScreenUpdating = True
MsgBox "No more rows contain: " & lookFor & "or" & lookFor2 & ", therefore exiting"
Exit Sub
End If
If Not Application.ScreenUpdating Then Application.ScreenUpdating = True
Set ws = Nothing
End Sub
您可以使用specialcells來抓取任何公式錯誤單元格,並刪除一次命中的行,然後使用自動篩選器並刪除另一個命中的.75行(使用.Text屬性很慢) – JosieP