2010-12-01 5 views
0

Ich muss einen Prozess automatisieren, der kein einmaliges Ereignis ist, ~ 500 Einrichtungen mit jeweils mehr als 100 Anlagen, die alle für das ganze Jahr über für verschiedene Termine geplant sind. Ich habe ein Arbeitsbuch mit meinem Haupt-/Quellblatt sowie 12 Monatsblättern (Jan, Feb, March, ... Dez) eingerichtet. Was ich brauche, ist eine Art Code, der es mir erlaubt, nach einem bestimmten Datum zu suchen und es sowie andere entsprechende Daten an das entsprechende Blatt zu senden.Excel 2003 VBA - Datum suchen und verschieben Relevante Daten

Zum Beispiel habe ich einen Vermögenswert, der für Wartung im Juni, 6/17/11 fällig ist. Ich brauche Excel, um nur mit dem Monat nach diesem zu suchen und dieses Asset sowie seinen Namen, die Beschreibung, die Kosten usw. auf die Registerkarte Juni zu verschieben. Ich habe es geschafft, es zu bekommen, um Vermögenswerte auf der Suche nach "6 /" zu finden, aber es kann keine Vermögenswerte mit einem Datum vom 6/17/11 finden. Es kopiert alle erforderlichen Daten und versucht, es in dem richtigen Blatt zu verschieben, wenn dieser Versuch einen Microsoft Visual Basic-Fehlercode 400 auftritt, wird angezeigt. Irgendwelche Ideen? Alle Hilfe wird geschätzt. siehe

+0

Bitte senden Sie einen Code. – Fionnuala

+0

Nicht genug Zeichen, um anscheinend zu schreiben. Auch nach dem Abschneiden der Kommentare & überschüssige Leerzeichen. Ich kann Ihnen einen Teil oder alles per E-Mail zusenden. Ich habe eine Arbeitsmappe für Testzwecke eingerichtet, wenn Ihnen das weiterhilft. – TRB

+0

Nur das Bit, das das Datum findet und die Zeile kopiert, wäre ausreichend, oder Sie könnten Ihre Beispieldatei auf eine Dateifreigabeseite hochladen. – Fionnuala

Antwort

0

, ob das hilft ...

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

Sie können die Code-Taste (1s und 0s) verwenden, um Code zu formatieren. – Fionnuala

Verwandte Themen