2010-12-22 7 views
0

Ich versuche, diesen Code zu finden, um ein beliebiges Datum im Dezember zu finden und es in ein Arbeitsblatt innerhalb derselben Arbeitsmappe zu kopieren. LSheetL ist meine Dezember-Registerkarte. Ich habe auch die anderen 11 Monate Tabs erstellt und muss dieses Stück Code für jeden Monat duplizieren, Gibt es eine einfachere/mehr konsolidierte Möglichkeit, einen Monat für Monat Scan/Copy/Paste in den entsprechenden Tab zu erreichen? - Mein Problem ist, dass, wenn ich diesen Code ausführen, gibt es mir ein "Microsoft Visual Basic - Laufzeitfehler '1004' - Application-definierte oder objektdefinierte Fehler". Irgendwelche Ideen? Ich denke darüber nach, diesen Code abzuschaben und einen anderen Ansatz zu verfolgen, aber ich würde gerne sehen, ob wir das schaffen können, bevor ich einfach herumspringe. Mir wurde auch gesagt, dass das Aktivieren verschiedener Blätter nicht die "schönste" Methode ist, Daten von hier nach da zu bekommen, gibt es eine schönere Art, diese Funktion auszuführen? Danke für jede Hilfe.Excel 2003 VBA Suchen und Kopieren in neues Arbeitsblatt

[code]

While LContinue = True 

    LastRow = Cells(65535, "q").End(xlUp).Row 

     If Month(Range("Q" & CStr(LRow)).Value) = 12 Then 

     Range("E" & CStr(LRow) & ",G" & CStr(LRow) & ",K" & CStr(LRow) & ",O" & CStr(LRow) & ",P" & CStr(LRow) & ",Q" & CStr(LRow) & ",AK" & CStr(LRow)).Select 
     Selection.Copy 

      Sheets(LSheetL).Activate 
      Range("A" & CStr(LCurPRow)).Select 
      Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
      Range("A1").Select 

      LCurPRow = LCurPRow + 1 

      Sheets(LSheetMain).Activate 

     End If 

    LRow = LRow + 1 

Wend 

MsgBox "The copy has completed successfully." 

[/ code]

+0

Es scheint einige Initialisierung Code fehlt –

Antwort

0

Zuerst bitte Ihren gesamten Code veröffentlichen, wird dies einfacher sein, das Problem zu finden. Dann sehe ich nicht, wenn Sie den Zustand Ihrer While-Schleife ändern, also im Grunde die Schleife nie enden.

LastRow = Zellen (65535, "q"). Ende (xlUp) .Row Diese Zeile scheint mir falsch, die Methode Zellen nehmen zwei Zahlen als Parameter, also "q" ist wahrscheinlich der Grund, den Sie haben dieser Fehler. Verwenden Sie den Methodenbereich wie folgt: Range ("Q65535") oder Cells (65535,17)