2016-06-26 13 views
0

マクロを持っていますが、保持したい行を削除しています(行番号)。別のシートですが、試してみるとすべてが最後の試合を移動するか、または保持したいすべての行が削除されます。 What happensマクロは削除したいものを削除しています

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 

編集:私は何が起こっているかの画像を入れて、私はバスが唯一の最後の行を移動し、代わりに内容を洗浄する別のシートに移動しようとしました。命令は、維持することです保つ必要があり、次の行に行けば

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のようなロジックit'sは、それは、行になります。しかし、問題は、コードがその行を削除するということです。

+0

タイプミスのようです。 'For Each c In x'の代わりに' For Each u In x'を試してください。あなたがサブオプションの前に 'Option Explicit'をインクルードするならば、あなたはそのようなエラーを自分で捕まえる可能性がより高くなります。また、 'Sheets(" SheetthatIwannaClean ")を変更します。' Sheets( "SheetthatIwannaClean")を選択し、Activateを実行します(この行はすべて削除できます)。 – 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 
関連する問題