2016-06-02 4 views
2

У меня есть цикл в нижней части моего кода, который успешно проходит мои данные и удаляет все строки, где столбец H = 0.Excel VBA - нужно удалить строки, где значения ячейки в столбце B, где заполнены ссылочные ошибки

Однако в столбце B отображается несколько ячеек, отображающих #REF!. Мне также хотелось бы, чтобы этот цикл удалял эти строки таким же образом, как и 0 в столбце H.

Я думаю, что моя проблема не знает, как ссылаться на эти типы ошибок. Обработка #REF!, как строка, кажется, не работает.

Спасибо!

Sub test() 

Dim currentSht As Worksheet 
Dim lastRow As Long 
Dim lastCol As Long 
Dim startCell As Range 
Dim r As Integer 

Set startCell = Sheets("Sheet1").Range("A1") 
Set currentSht = ActiveWorkbook.Sheets("Sheet1") 

lastRow = startCell.SpecialCells(xlCellTypeLastCell).Row '<~~ Not sure why, but do not use "Set" when defining lastRow 
lastCol = startCell.SpecialCells(xlCellTypeLastCell).Column 

For r = 1 To lastRow Step -1 
    If currentSht.Cells(r, "H").Value = 0 Or currentSht.Cells(r, "B").Text = "#REF!" Then 
    Rows(r).Select 
    Selection.EntireRow.Delete 
End If 
Next r 

currentSht.Range(startCell, currentSht.Cells(lastRow, lastCol)).Select 

End Sub 
+3

Try 'ISERROR (currentSht.Cells (r, "B")). –

+0

также вы можете комбинировать строки удаления с 'Строками (r) .Delete' –

+0

Вместо проверки свойства« Значение »проверьте свойство« Текст ». Это должно возвращать строку '#REF!'. –

ответ

0

Я думаю, что я вижу проблему:

For r = 1 To lastRow Step -1 

Изменение этой строки

For r = lastrow to 1 Step -1 
+0

ДА! Вот и все. отлично работает сейчас, спасибо –

0

Как насчет этого кода:

Sub Delete0() 

Dim F As Integer 
Dim Y As Integer 
Dim RngCount As Range 


Set RngCount = ActiveSheet.Range("H:H") 
Y = Application.WorksheetFunction.CountA(RngCount) 

For F = Y To 1 Step -1 

If IsError(ActiveSheet.Range("H" & F)) Then 
ActiveSheet.Rows(F).EntireRow.Delete 
ElseIf ActiveSheet.Range("H" & F).Value = 0 Then 
ActiveSheet.Rows(F).EntireRow.Delete 
End If 


Next F 

End Sub 
+0

Такая же проблема. Он не пропустил #REF! клетки. –

+0

Хорошо, позвольте мне проверить, что действительно быстро. –

+0

@VBAPete Я бы не ожидал, что это сработает. Свойством .Value для этой ячейки будет Error 2023 –

Смежные вопросы