2017-03-07 4 views
2

列Hのセルが「完了」とマークされたときにマクロを書き込む方法を学んでいるので、行全体がコピーされ、「完了」という新しいページに貼り付けられます現在のページから行を削除します。マクロが完了したら新しい列に行をコピーする

私は自分で録音しようとしましたが、それを壊し続けました。私はこの権利をしているのかどうかわからない。

これは、これまでの私のコードです:

Sub Completed_Move() 
    ' Completed_Move 
    Macro Dim srchrng As Range, row As Range 

    Set srchrng = Range("H1,H500") 
    'For each cel in srchrng 
    If InStr(1, cel.Value) = Complete Then 
     Activecell.Offset(0, -7).Range("A1:N1").Select 
     Selection.Cut 
     Sheets("Completed").Select 
     Activecell.Select 
     ActiveSheet.Paste Sheets("Current").Select 
     Activecell.Rows("2:1").EntireRow.Select 
     Selection.Delete Shift:=xlUp 
     Activecell.Offset(2, 7).Range("A1").Select 
    End if 
End Sub 
+0

をあなたが持っているコードは何ですか?どのようにあなたは "それを壊している"?あなたはエラーを受け取りますか(もしそうなら、どのようなエラー、どこで)?あなたがこれまでに試したことを示してください、そして私たちはあなたを手助けすることができます。 – BruceWayne

+0

コピー&ペースト部分のマクロを記録しましたが、それを実行した時点では、アクティブなセルのみがコピーされ貼り付けられました。私が得るエラーは "Expected End Sub"です。次に、H列の検索範囲を作成しようとした後、If Thenを追加しました。 –

+0

@CameronAlexander:[ツアー](クリック)してSOの仕組みを学んでください。 – R3uK

答えて

0

あなたはコメントで言ったように、あなたはこの1つのように明示的なとして、エラーメッセージが表示されている場合:

期待End Subの

これは、あなたのコードにサブを閉じるためにEnd Subが見つからないことを意味します!コードの最後に追加してください。ここで


あなたのコードは、(... End Subで)で、改善された:

Sub Completed_Move() 
    'Completed_Move Macro 
    Dim SrchRng As Range, RowRg As Range, CellRg As Range 
    Dim wS1 As Worksheet, wSC As Worksheet 
    Dim i as Long 

    With ThisWorkbook 
     Set wS1 = .Sheets("Sheet1") 
     Set wSC = .Sheets("Completed") 
    End With 'ThisWorkbook 

    Set SrchRng = wS1.Range("H1:H500") 
    For i = SrchRng.Cells(SrchRng.Rows.Count,1).Row To SrchRng.Cells(1,1).Row Step -1 
     'If "Complete" is part of value in H 
     If InStr(1, SrchRng.Cells(i,1).Value, "Complete") Then 
      With wSC 
       wS1.Range("A" & SrchRng.Cells(i,1).Row & ":N" & SrchRng.Cells(i,1).Row).Copy .Range("A" & .Range("A" & .Rows.Count).End(xlUp).Row + 1) 
      End With 'wSC 
      SrchRng.Cells(i,1).Rows("2:1").EntireRow.Delete Shift:=xlUp 
     End If 
    Next i 
End Sub 
+0

しかし、あなたが転送をループしている場合は、行を削除しているので、次の行が今スキャンして削除した現在の行の行番号を取得するため、バック・トゥ・バック・マッチが欠落しています。 –

+0

@ShaiRado:目を覚ますためのThx、私はちょうどOPのベースを使用し、それを考えなかった! ;)私は少し修正します! ;) – R3uK

+0

私はこれをもっと理解し始めることができます。Shaiが言っていることは、私がこれを実行すると、完了した行に戻ることができなくなるということです。それは最後の命令のためですか? CellRg.Rows( "2:1")。EntireRow.Delete Shift:= xlUp –

関連する問題