2016-07-06 8 views
-1

最後の列の値がfalseの場合、行を移動する必要があるワークシートがあります。 シート2に移動してシート全体を通過する方法がわかりません。 ありがとうございました。行を別のシートに移動する

Sub DeleteMatches2() 
    Dim a As Range, b As Range 
    Dim c As String 
    'The column that has the value is V2 
    With Sheets("Controle Estoque Fixo") 
     Set a = .Range(.Cells(2, "V"), .Cells(Rows.Count, "V").End(xlUp)) 
    End With 

    For Each b In a 
     If b.Value = "False" Then 
      Sheets("Sheet1").Select 
      'know I am lost 

     End If 
    Next 
End Sub 
+4

あなたはSOを探しましたか?ここでこれを行う方法の例があります。また、実際に*別のシートに行をコピーしようとしましたか? –

+0

'Set a'のときに' Rows.Count'の前に '.'を追加してください。次の部分では、Sheet2の次の行(変数を使用)を探して、カット/ペーストできます。あなたがここで求めているものの無数の例がありますので、検索ボックスを使用してください。私は、マクロレコーダーを使用して、カット/ペーストして、そのコードがどのように見えるかを見て、そこから調整することをお勧めします。 – BruceWayne

+1

lol私は 'with'をどのように使い、' select'を使うのが好きですか?XD – findwindow

答えて

0

これを行うには多くの方法がありますが、最も簡単な方法は、他のシートで使用した行の数を追跡する行カウンタを維持することです。このカウンターを1ずつ増やします。人々がこれを行うスタックオーバーフロー、何か他のものかもしれないのは良い顔をしているために多くの多くの多くの方法があるコメントしてきたように

Sub DeleteMatches2() 

    Dim a As Range, b As Range 
    Dim c As String 
    Dim rowCounter As Long 

    rowCounter = 2 ' start at row 2 

    'The column that has the value is V2 
    With Sheets("Controle Estoque Fixo") 
     Set a = .Range(.Cells(2, "V"), .Cells(Rows.Count, "V").End(xlUp)) 
    End With 

    For Each b In a 
     If b.Value = "False" Then 
      'Sheets("Sheet1").Select ' you don't need to select an object to access it, so remove this 
      'here's the bit you need 
      Sheets("Controle Estoque Fixo").Rows(b.row).Cut Sheets("Sheet1").Rows(rowCounter) ' this cuts and pastes all in one line 
      ' you use the row counter to specify the destination 

      rowCounter = rowCounter + 1 ' the next time you'll paste on the next row 

     End If 
    Next 
End Sub 

:最初に使用可能な行は行2であるので、あなたはSheet1の列のヘッダーを持っていると仮定しましょうあなたにアピールする。

関連する問題