2016-06-26 2 views
0

У меня есть макрос, но он удаляет строки, которые я хочу сохранить, исходя из числа (числа строк), которое он должен сохранить, он может перейти к другой лист, но все, что я пытаюсь сделать, просто перемещает последнее совпадение или удаляет каждую строку, которую я хочу сохранить. What happensMacro удаляет то, что я хочу сохранить

Sub KeepRows() 
    Dim x As Range, u As Range 
    Dim y As String 

    With Sheets("Sheetwithnumberrow") 
     Set x = .Range(.Cells(2, "H"), .Cells(Rows.Count, "H").End(xlUp)) 
    End With 

    For Each u In x 
     If u.Text = "keep row" Then 
      Sheets("SheetthatIwannaClean").Select 
      y = u.Offset(0, -1) 
      Rows(y).ClearContents 
     End If 
    Next 
End Sub 

EDIT: Я положил образ того, что происходит, я пытался перейти на другой лист вместо очистки содержимого, шины двигаться только последнюю строку.

Product ROW Instruction ROW Instruction 
1   6 keep row 6 keep row 
2   15 keep row 15 keep row 
3   18 Try Next 17 keep row 
4   24 keep row 24 keep row 
5   28 keep row 28 keep row 

Логика Это похоже Thig, она идет в строке, если команда должна держать, должен держать, и перейти к следующей строке. Но проблема в том, что код удаляет строку.

+0

Одобрено опечаткой. Попробуйте 'для каждого u в x' вместо' для каждого cIn x'. Если вы включили опцию «Option Explicit» перед юнитом, вы, скорее всего, поймаете такие ошибки самостоятельно. Также измените «Листы» («SheetthatIwannaClean»). Выберите 'to' Sheets («SheetthatIwannaClean»). Активируйте' (хотя вы можете полностью удалить эту строку). – Ralph

+0

О, Извините, я сделал ошибку, написав здесь. В коде это U. – Yoshio

+1

Если вы хотите сохранить строку, измените условие: 'If u.Text <>" сохранить строку "Then'? – trincot

ответ

0
Sub KeepRows() 
    Dim x As Range, u As Range 
    Dim y As String 

    With Sheets("Sheetwithnumberrow") 
     Set x = .Range(.Cells(2, "H"), .Cells(.Rows.Count, "H").End(xlUp)) 
    End With 

    For Each u In x 
     If u.Text <> "keep row" Then Sheets("SheetthatIwannaClean").Rows(u.Offset(0, -1)).EntireRow.ClearContents 
    Next u 
End Sub 
Смежные вопросы