2017-02-15 8 views
0

私は以下のコードを使用して、ユーザーから日付を入力します。私は何をしたいです:VBA(コード編集済み)を使用して異なるシートに行をコピーして貼り付け

  • は、シートのCOL K「レイテンシー」で入力した日付の前にすべての日付を検索するに
  • 行全体をコピーして、「前」という名前の別のシートに貼り付けします。

マイコード:

Sub Previousweek() 
Dim userdate 

userdate = InputBox("Enter the date", "Enter Date", Date) 
If IsDate(userdate) Then 
    'logic here 
    End If 

End Sub 

更新されたコード:

Sub Previousweek() 
Dim userdate 

userdate = InputBox("Enter the date", "Enter Date", Date) 
Dim rng As Range, cell As Range 
Set rng = Range("K2:K200") 
For Each cell In rng 
    If cell.Value < userdate Then 
    cell.EntireRow.Copy 
    Sheets("Previous").Range("A65536").End(xlUp).Offset(1, 0).Select 
      Sheets("Previous").Paste 
     End If 
    Next cell 
    End Sub 

これは、範囲外の添字として下の行でエラーを示している。

Sheets("Previous").Range("A65536").End(xlUp).Offset(1, 0).Select 
+0

[日付範囲を介してデータをコピーする]の可能複製(http://stackoverflow.com/questions/42245780/copying-data-through-date-range)以前に(他の – R3uK

+1

うーん...ニースの使用15分前に質問...)与えられたコード。多分あなた自身のビット?これは無料のコーディングサイトではありません!異なるシートにコピー/ペーストの行にたくさんの質問/回答があります。開始するには十分なはずです。 – R3uK

+0

@ R3uK LOL、私もこれに気付きました:) –

答えて

2

ちょうどあなたがにデータを貼り付けるシートの名前にWith ThisWorkbook.Sheets("Previous")
を変更!

Sub Previousweek() 
    Dim UserDate As String 
    Dim CeLL As Range 
    UserDate = InputBox("Enter the date", "Enter Date", Date) 

    If IsDate(UserDate) Then 
     With ThisWorkbook.Sheets("Previous") 
      For Each CeLL In ThisWorkbook.Sheets("Latency").Range("K2:K200").Cells 
       If CeLL.Value < UserDate Then 
        CeLL.EntireRow.Copy .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0) 
       End If 
      Next CeLL 
     End With 'ThisWorkbook.Sheets("Previous") 
    Else 
    End If 
End Sub 
+1

真剣に?あなたのコメントの後でさえ?彼にプロジェクト全体の範囲を送ってもらうように頼んでください。私たちは彼のためにそれをやります(1時間ごとにチャンクでチャンクしないでください)。少なくともDateDiffを使用してください:) –

+1

@ShaiRado:うん、私はまだ10k担当者に急いでいます!そして、他のコメントで言われたように、彼はもう少し試してみました。これは良いスタートです!それでも、私は実際に 'DateDiff'を追加しないことを怠っていましたが、これも日付に変換する必要がありました、2ステップ、とても長いです!^^ – R3uK

+0

ここに私の援助があります。 –

1

は小さい日付擬似を見つけますコード

Dim rng As Range, cell As Range 
Set rng = Range("K2:K200") 
For Each cell In rng 
    if cell.value < userdate then 
    //TODO copy to previous 
    end if 
Next cell 
+0

これは行全体をコピーして別のシートに貼り付けますか? –

+1

これは、このコピー方法の日付を比較しています。http://www.ozgrid.com/forum/showthread.php?t=31461 –

関連する問題