2016-02-19 164 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 –