我正在處理VBA代碼,並且需要部分代碼來刪除表格中「J」爲「#N/A」列中文本的所有行。我已經編寫了一個代碼,但是在調試時出現類型不匹配錯誤。刪除列中出現錯誤的所有行
下面是代碼
Dim i As Long
For i = Cells(Rows.Count, 10).End(xlUp).Row To 1 Step -1
If Cells(i, 10) = "#N/A" Then Cells(i, 1).EntireRow.Delete
Next i
我正在處理VBA代碼,並且需要部分代碼來刪除表格中「J」爲「#N/A」列中文本的所有行。我已經編寫了一個代碼,但是在調試時出現類型不匹配錯誤。刪除列中出現錯誤的所有行
下面是代碼
Dim i As Long
For i = Cells(Rows.Count, 10).End(xlUp).Row To 1 Step -1
If Cells(i, 10) = "#N/A" Then Cells(i, 1).EntireRow.Delete
Next i
試試這個代碼:
Dim i As Long
For i = Cells(Rows.Count, 10).End(xlUp).Row To 1 Step -1
If Cells(i, 10).Text = "#N/A" Then Cells(i, 1).EntireRow.Delete
Next i
使用Range.SpecialCells method與xlSpecialCellsValue常數xlErrors快速識別J列所有單元格有錯誤。它沒有透露細胞是公式還是鍵入常量,所以我添加了代碼來檢查通過xlCellType Enumeration類型。
Sub del_error_rows()
With Worksheets("Sheet3")
On Error Resume Next
With .Columns(10).SpecialCells(xlCellTypeFormulas, xlErrors)
.EntireRow.Delete
End With
With .Columns(10).SpecialCells(xlCellTypeConstants, xlErrors)
.EntireRow.Delete
End With
On Error GoTo 0
End With
End Sub
的On Error Resume Next
是必要的情況下沒有細胞存在與該特定錯誤配置。在這種情況下,SpecialCells將是Nothing
,並且您必須繞過嘗試不處理任何內容而引發的任何錯誤。
你需要捕獲錯誤N/A是顯示,單元格內容類似於錯誤2042,所以使用IsError –
'If worksheetfunction.IsError(Cells(i,10))then ...'as @ Nathan_Sav說 –
我試過你的建議你的建議,它似乎工作,但說年齡執行。我想這是因爲該文件有超過10000行。 這是我所做 '昏暗我只要 對於i =細胞(Rows.Count,10).END(xlUp).Row要1個步驟-1 如果worksheetfunction.IsError(細胞(I,10 ))然後單元格(i,1).EntireRow.Delete 下一頁i' –