2016-02-19 165 views
0

我希望你能幫助運行時錯誤1004

我收到運行時錯誤1004碼,我希望你能幫助

我的代碼如下。

錯誤是發生在lastrow = Sheet1.Cells(Rows.Count, 1).End(x1Up).Row

Sub copycolumns() 
Dim lastrow As Long, erow As Long 
lastrow = Sheet1.Cells(Rows.Count, 1).End(x1Up).Row 
For i = 2 To lastrow 
If Sheet1.Cells(i, 6) = "Algiers" Then 
Sheet1.Cells(i, 1).Copy 
erow = Sheet2.Cells(Rows.Count, 1).End(x1Up).Offset(1, 0).Row 
Sheet1.Paste Destination:=Worksheets("Sheet2").Cells(erow, 1) 
Sheet1.Cells(i, 3).Copy 
Sheet1.Paste Destination:=Worksheets("Sheet2").Cells(erow, 2) 
Sheet1.Cells(i, 6).Copy 
Sheet1.Paste Destination:=Worksheets("Sheet2").Cells(erow, 3) 
End If 
Next i 
Application.CutCopyMode = False 
Sheet2.Columns().AutoFit 
Range("A1").Select 
End Sub 
+0

'x1Up'應該是'xlUp'它應該是小寫字母L不是1 –

+0

謝謝Scott –

回答

2

你需要一個工作表對象,xlUp不等於x1Up(代碼有錯字即數字1)。

下面一行用

lastrow = ThisWorkbook.Worksheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row 

,而不是

lastrow = Sheet1.Cells(Rows.Count, 1).End(x1Up).Row 

的完整代碼

Sub RoundedRectangle2_Click() 
Dim lastrow, erow As Long 
lastrow = ThisWorkbook.Worksheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row 
For i = 2 To lastrow 
If Sheet1.Cells(i, 6) = "Algiers" Then 
Sheet1.Cells(i, 1).Copy 

erow = ThisWorkbook.Worksheets("sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 
Sheet1.Paste Destination:=Worksheets("Sheet2").Cells(erow, 1) 
Sheet1.Cells(i, 3).Copy 
Sheet1.Paste Destination:=Worksheets("Sheet2").Cells(erow, 2) 
Sheet1.Cells(i, 6).Copy 
Sheet1.Paste Destination:=Worksheets("Sheet2").Cells(erow, 3) 
End If 
Next i 
Application.CutCopyMode = False 
Sheet2.Columns().AutoFit 
Range("A1").Select 
End Sub 

或者,您可以使用下面網上找的行數

rows_count = WorksheetFunction.CountA(ThisWorkbook.Worksheets("Sheet1").Range("A:A")) 
+0

你是男人啦!如此簡單而有效。非常感謝你的幫助 –

+0

@PhilipConnell,很好。如果問題得到解決,您可以通過接受答案來解決問題。它接受了一個答案(http://stackoverflow.com/help/accepted-answer) – Raju

+0

嗨拉朱它昨天工作得很好,但現在它給運行時424 Sheet2.Columns()。AutoFit –