2016-09-05 4 views
1

[Bildbeschreibung hier eingeben] [1] Ich möchte Bereich von 20-30 Zellen in Zeile kopieren und diese in einem anderen Blatt einfügen. Ich habe ein Programm gemacht, aber mit Fehlern von 424 und 1004 konfrontiert. Ich habe versucht, diese Fehler zu lösen, konnte aber nicht, also fing ich an, verschiedene Tipps von verschiedenen Seiten anzuwenden. Aber konnte keine Lösung finden. Ich werde deine Hilfe zu schätzen wissen.kopieren Sie Daten von einem Blatt und hinter es auf einem anderen Blatt der gleichen Arbeitsmappe

dank
Sub CopyRows() 

Dim LastRow As Integer, i As Integer, erow As Integer 
Dim copyrange As Range 

Sheet3.Select 
'where is my data lies 
LastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row 
For i = 4 To LastRow 
    If cells(i, 1).Value = r Then 
     ' condition that should satisfy 

     copyrange = Range(Sheet3.cells(i, 8), sheete3.cells(i, 45)).Select 
     Selection.Copy 
     Worksheets("sheet2").Select 
     erow = ActiveSheet.cells(Rows.Count, 1).End(xlUp).Offset(1, 0) 
     ' erow is last empty row where i wants to copy data 

     ActiveSheet.cells(erow, 3).Select 
     ActiveSheet.Paste 
     ActiveWorkbook.Save 
    End If 
Next i 

End Sub 
+0

ist es 'Sheet3' ? oder 'Sheets (" Sheet3 ")'? –

+0

Sie erhalten diesen Fehler http://stackoverflow.com/questions/31985984/vb-run-time-error-1004-application-defined-or-object-defined-error und dieser Fehler http://stackoverflow.com/ Fragen/16084686/Excel-VBA-Run-Time-Fehler-424-Objekt-erforderlich-wenn-Versuchen-zu-kopieren-Textfeld – muttonUp

Antwort

0

enter image description hereErste, als Faustregel gilt, immer definieren und Ihre Blätter gesetzt, es wird Ihnen helfen, eine Menge möglicher Fehler in der Zukunft zu vermeiden .

Ich bin nicht sicher, was r in Ihrem Code ist, in der Zeile:

If Sheet3.cells(i, 1).Value = "r" Then

Wenn es eine Variable, die Sie zuvor definiert (nicht Teil des beigefügten Code), dann wird es funktionieren. Wenn Sie den Buchstaben "r" bedeutet (a String), dann müssen Sie diese Zeile in dieser Antwort ändern:

If .Cells(i, 1).Value = "r" Then 

Abgesehen davon, verwenden Sie den Code unten:

Option Explicit 

Sub CopyRows() 

Dim LastRow  As Integer, i As Integer, erow As Integer 
Dim copyrange As Range 
Dim Sht3 As Worksheet, Sht2 As Worksheet 

' always define and set your Sheets >> on the safe side 

Set Sht3 = ThisWorkbook.Sheets("pending req") 
Set Sht2 = ThisWorkbook.Sheets("recieve") 

With Sht3 
    'find last row with data 
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 

    For i = 4 To LastRow 

     'If .Cells(i, 1).Value = r Then ' condition that should satisfy (not sure what is r ?) 
     ' use the line below to check if cell value equals "r" 
     If .Cells(i, 1).Value = "r" Then 

      Set copyrange = .Range(.Cells(i, 8), .Cells(i, 45)) 

      ' erow is last empty row where I want to copy data (assuming you meant Column A) 
      erow = Sht2.Cells(Sht2.Rows.Count, 1).End(xlUp).Row + 1 

      ' copy a range from one sheet to another without Selecting or activating 
      copyrange.Copy Sht2.Cells(erow, 3) 
     End If 
    Next i 

End With 

ThisWorkbook.Save 

End Sub 
+0

Hier ist "r" eine Zeichenkette und ich erhalte den Fehler 9 bei sht3. Mein schlechtes Blatt ("sheet3") –

+0

"r" ist eine Variable, die eine Zeichenkette darstellt? Oder du vergleichst, um zu sehen, ob es "r" ist? –

+0

@ divy.h siehe editierten Code (hinzugefügt auch die Option, die überprüft, ob Zellenwert = "r") –

0

Hier gereinigt es wenig

Sub CopyRows() 
Dim LastRow As Long, i As Long, erow As long 
Dim copyrange As Range 

/* where is my data lies 
LastRow = Sheet3.Range("A" & Rows.Count).End(xlUp).Row 
For i = 4 To LastRow 
If Sheet3.cells(i, 1).Value = "r" Then   '<--- is r a string here ? put quotes if yes 
/* condition that should satisfy 

erow = Sheet2.cells(Rows.Count, 1).End(xlUp).Offset(1, 0) 
/* erow is last empty row where i wants to copy data 

Set copyrange = Sheet3.Range(cells(i, 8), cells(i, 45)) 
copyrange.Copy Destination:= Sheet2.cells(erow, 3) 

ActiveWorkbook.Save 
End If 
Next i 
End Sub 
+0

immer noch dasselbe Problem. 1004 Fehler bei Kopierbereich erhalten. Ich benutze Excel 2007. Ist es wegen der älteren Version? Hier ist "r" eine Zeichenkette –

Verwandte Themen