2016-03-23 25 views
0

こんにちはすべて60,000行以上のシートがあり、行の列に一定の値が含まれている場合、すべての行を新しいシートにコピーしたいと考えています。特定の値を持つ行をコピーするvba excel

Sub Macro3() 
    Dim rngA As Range 
    Dim cell As Range 
    Set col = Cells(Rows.Count, "A").End(xlUp) 

    Set rngA = Range("A2", col) 
    For Each cell In rngA 
     If cell.Value = "Energizer" Then 
      cell.EntireRow.Copy 

     End If 
    Next cell 

End Sub 

コードはまったく動作しません。

+0

宛先引数が存在しません。 range.copyメソッド –

答えて

2

以下は、列Aの "Energizer"を含むすべての行をクリップボードにコピーします。あなたは、新しいシートに直接行をコピーコピーコマンドの後に送信先を追加したい場合は、コードで述べたように

Sub Macro3() 
    Dim rngA As Range 
    Dim cell As Range 
    Dim col As Range 
    Dim copiedRange As Range 
    Dim r As Integer 

    Set col = Cells(Rows.Count, "A").End(xlUp) 
    r = 0 
    Set rngA = Range("A2", col) 

    For Each cell In rngA 
     If cell.Value = "Energizer" Then 
      If r = 0 Then 
       Set copiedRange = cell.EntireRow 
       r = 1 
      Else 
       Set copiedRange = Union(copiedRange, cell.EntireRow) 
      End If 
     End If 
    Next cell 


    If r = 1 Then 
     copiedRange.Copy 
    End If 


End Sub 

+0

のオブジェクト変数またはブロックが設定されていないヘルプを参照してください。デバッグしようとしている間、それはコピーの近くに停止します。 – user3237076

+0

コピーした範囲が空でない場合にのみ範囲がコピーされるようにコードを変更しました。それは今働きますか?そうでない場合は、テーブルをアップロードできますか?コードは私のためにうまく動作するので。 – LMM9790

0

これが実際にコードのすべての場合は、コピーした行を新しいシートに貼り付けるのを忘れてしまいました。

関連する問題