2017-04-18 6 views
1

Ich versuche, ein VBA-Makro erstellen, die nach einer nicht leeren Zelle in "Sheet1" suchen würde und wenn nicht leer, würde es die entsprechende aktive Zelle einfügen Spalte von "Sheet1" zu derselben Spalte in "Sheet2".Laufzeitfehler: 1004 (Kopieren auf ein anderes Blatt)

Unten ist mein Code, aber ich bin sicher, dass ich etwas falsch zu machen, weil der Code mir einen Fehler wirft: 1004.

Sub Test() 
    Dim cel As Range 
    Dim strAddress As String 
    Dim StartPoint As Range 

    Set StartPoint = ActiveCell 
'Change to necessary amount of Rows & Columns 
    With Sheets("Sheet1").Range(Cells(9, 5), Cells(1000, 200)) 
     Set cel = .Find(What:="*", After:=Cells(1000, 200), SearchOrder:=xlByRows, SearchDirection:=xlNext) 
     If Not cel Is Nothing Then 
      strAddress = cel.Address 
      Do 
       ' Do something with cel, e.g. 
       StartPoint.EntireColumn.Copy Destination:=Worksheets("Sheet2").Range(StartPoint.Column & "1").End(xlToRight).Offset(1) 
       Set cel = .FindNext(After:=cel) 
       If cel Is Nothing Then Exit Do 
      Loop Until cel.Address = strAddress 
     End If 
    End With 
End Sub 

Kann jemand freundlich beraten, was ich falsch mache? Vielen Dank!

+1

1) Suche hier nicht nach * Laufzeitfehler 1004 *. 2) Den Debugger nicht verwenden, um durch den Code zu gehen, um zu sehen, welche der Male, die Sie versuchen, auf eine Objektreferenz zuzugreifen, fehlschlägt oder falsch ist. 3) Hier wird nicht erneut nach * Laufzeitfehler 1004 * gesucht. –

+0

Hallo, ich habe den Debugger ausgeführt & es zeigt den Fehler bei der "mit" -Anweisung. Und ich verstehe, dass der Fehler geworfen wurde, weil VBA nicht begriff, auf welche Zellen ich innerhalb des Bereichs bezog. Aber das Problem ist, ich bin kein Power-Makro-Benutzer und nur ein Kleinkind, das immer noch die Grundlagen lernt, haha! :) Schätzen Sie, wenn Sie mir bitte mitteilen können, welchen Fehler ich im Code mache! : D –

+2

FWIW - die unqualifizierten 'Cells' Verweise machen die Anweisung' With Sheets ("Sheet1"). Range (Cells (9, 5), Cells (1000, 200)) 'äquivalent zu' With Sheets ("Sheet1") .Range (ActiveSheet.Cells (9, 5), ActiveSheet.Cells (1000, 200)) ', was offensichtlich Unsinn ist. Aber Sie wollten wirklich 'Mit Blättern (" Sheet1 "). Bereich (Sheets (" Sheet1 "). Zellen (9, 5), Sheets (" Sheet1 "). Zellen (1000, 200))'. Wie @KenWhite sagte, hätte eine Suche auf dieser Seite Hunderte von Fragen ergeben, die zeigen, dass dies das Problem ist. – YowE3K

Antwort

0

Versuchen Sie diese zwei Modifikationen:

With Sheets("Sheet1").Range("E9:GR1000") 

.

cel.EntireColumn.Copy Worksheets("Sheet2").Columns(cel.Column) 
+0

Hallo :) Vielen Dank für Ihre schnelle Antwort! Das entfernte den Fehler, aber die Werte werden nicht in Sheet2 eingefügt. Ich habe Ziel: = StartPoint.EntireColumn.Copy Ziel: = Arbeitsblätter ("Sheet2"). Spalten (StartPoint.Column) aber immer noch das Ergebnis ist das gleiche. Gibt es eine weitere Zeile, die ich hinzufügen muss, um die kopierten Spalten von Sheet1 in Sheet2 einzufügen? –

+0

Ah, ich denke, Sie müssen 'StartPoint' durch' cel' ersetzen (siehe Bearbeitete Antwort). @DragonWarrior –

+0

Nochmals vielen Dank :) Ich verstehe das Konzept! Ich denke, dass ich diesen Block abit mehr anpassen muss, um meiner Notwendigkeit zu entsprechen. Trotzdem, nochmals vielen Dank :) –

Verwandte Themen