2010-12-01 9 views
0

1回限りのイベントではないプロセスを自動化する必要があります.100以上のアセットを持つ500以上の施設が完成しています。ワークブックにメイン/ソースシートと12ヶ月間のシート(1月、2月、3月、12月)を設定しました。私が必要とするのは、特定の日付を検索し、それに対応する他の行に対応するデータを適切なシートに送信するためのコードです。Excel 2003 VBA - 日付と移動を検索関連するデータ

たとえば、私は6月、6月17日にメンテナンス予定の資産を持っています。私は、月のみを使ってExcelを検索し、その資産、名前、説明、コストなどを6月のタブに移動する必要があります。 Iveは「6 /」を検索している資産を見つけることができましたが、6/17/11の日付の資産は見つかりませんでした。必要なすべてのデータをコピーし、適切なシートに移動しようとします。この試行でMicrosoft Visual Basicのエラーコード400がポップアップします。何か案は?すべての助けに感謝します。この場合に役立ちます

+0

を参照してください。 – Fionnuala

+0

明らかにコードを投稿するのに十分な文字がありません。コメントと余分なスペースを切り落とした後でさえ。私はあなたの一部または全員に電子メールを送ることができます。もしそれが助けになるなら、テスト目的のためにワークブックを設定しました。 – TRB

+0

日付を見つけて行をコピーするだけのビット、またはサンプルファイルをファイル共有サイトにアップロードすることができます。 – Fionnuala

答えて

0

は、いくつかのコードを投稿してください...

Private Sub FindCells() 
    '' step 1, find all the rows containing your date (June 2011 dates hardcoded in this example) 
    Dim CollectionOfRowRanges As New Collection 
    Dim ws As Worksheet 
    Dim rgCell As Range 
    For Each ws In ThisWorkbook.Worksheets 
     For Each rgCell In ws.UsedRange.Cells 
      If IsDate(rgCell.Text) Then 
       If Month(CDate(rgCell.Value)) = 6 And Year(CDate(rgCell.Value)) = 2011 Then 
        '' for debugging only ... watch and make sure it stops at the right places 
        ws.Activate 
        rgCell.Select 
        Stop 
        '' end of debug code 
        Call CollectionOfRowRanges.Add(rgCell.EntireRow) 
       End If 
      End If 
     Next rgCell 
    Next ws 
    '' step 2, copy the rows to a new wb 
    Set ws = Workbooks.Add.Sheets(1) 
    ws.Name = "June 2011 Rows" 
    Dim rgRow As Range 
    Set rgCell = ws.Cells(1, 1) 
    For Each rgRow In CollectionOfRowRanges 
     Call rgRow.Copy 
     Call rgCell.EntireRow.PasteSpecial(xlPasteValues) 
     Set rgCell = rgCell.Offset(1) 
    Next rgRow 
End Sub 
+0

コードボタン(1と0)を使用してコードをフォーマットできます。 – Fionnuala