2013-12-23 4 views
1

У меня есть этот макрос, он должен удалить все ячейки, у которых не установлен фон, но когда я выполняю макрос, если две или более смежные ячейки не делают есть фон это только удаляет один из них, вот код:Почему мой макрос не удаляет все строки (VBA)

Sub Macro1() 
     Dim a As Range 

     Set a = Hoja1.Range("A1:A12") 
     For Each cell In a 
      If cell.Interior.ColorIndex = xlNone Then 
       cell.EntireRow.Delete 
      End If 
     Next 
End Sub 

ответ

4
Sub Macro1() 
    Dim a As Range, x As Long 

    Set a = Hoja1.Range("A1:A12") 

    For x = a.cells.count to 1 Step -1 
     with a.cells(x) 
      if .Interior.ColorIndex = xlNone Then .EntireRow.Delete 
     End With 
    Next x 
End Sub 
+0

Это работало безупречно, чем вы! но можете ли вы объяснить мне, почему мой код не работает? – Alejandro

+0

при удалении строк, вы должны работать снизу вверх из-за того, как Excel удаляет, а затем переходит к следующему. Я предполагаю, что у вас было две последовательные строки, которые соответствовали критериям, а вторая была пропущена. Работа со снизу поднимается вокруг этой проблемы. – guitarthrower

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