2016-01-13 122 views
0

我试图从一个工作表('摘要文档'全部在第4行)将单元格(字符串)复制到第二个工作表('工人1',从B10开始)。我相信我已经正确定义了所有元素。当我第一次运行时,它可以工作。但是,它在第​​二次运行时给我一个1004的错误。我很确定这是我的if/then语句查找下一个空行,但不确定问题是什么。Excel:将数据从一个工作表传输到另一个工作表上的下一个空行错误

Dim FileName As String, FileNumber As String, RecordingPeriod As String, RecordingType As String, Auditor As String, ReviewDate As String` 
Dim A1 As String, A2 As String, A3 As String, A4 As String, A5 As String, A6 As String 
Worksheets("Summary Document").Select 
FileName = Range("C4") 
FileNumber = Range("D4") 
RecordingPeriod = Range("E4") 
RecordingType = Range("F4") 
Auditor = Range("G4") 
ReviewDate = Range("H4") 
A1 = Range("J4") 
A2 = Range("K4") 
A3 = Range("L4") 
A4 = Range("M4") 
A5 = Range("N4") 
A6 = Range("O4") 
Worksheets("Worker 1").Select 
Worksheets("Worker 1").Range("B9").Select 
If Worksheets("Worker 1").Range("B9").Offset(1, 0) <> "" Then 
Worksheets("Worker 1").Range("B9").End(x1Down).Select 
End If 
ActiveCell.Offset(1, 0).Select 
ActiveCell.Value = FileName 
ActiveCell.Offset(0, 1).Select 
ActiveCell.Value = FileNumber 
ActiveCell.Offset(0, 1).Select 
ActiveCell.Value = RecordingPeriod 
ActiveCell.Offset(0, 1).Select 
ActiveCell.Value = RecordingType 
ActiveCell.Offset(0, 1).Select 
ActiveCell.Value = Auditor 
ActiveCell.Offset(0, 1).Select 
ActiveCell.Value = ReviewDate 
ActiveCell.Offset(0, 2).Select 
ActiveCell.Value = A1 
ActiveCell.Offset(0, 1).Select 
ActiveCell.Value = A2 
ActiveCell.Offset(0, 1).Select 
ActiveCell.Value = A3 
ActiveCell.Offset(0, 1).Select 
ActiveCell.Value = A4 
ActiveCell.Offset(0, 1).Select 
ActiveCell.Value = A5 
ActiveCell.Offset(0, 1).Select 
ActiveCell.Value = A6 
End Sub 
+0

问题是这个'End(x1Down)'。 '1'应该是一个小写的'L','End(xlDown)' –

回答

0

此外,除了上述的注释,代码可以大大simplfied:

Sub hhhhh() 
Dim ows as Worksheet 
Dim tws As Worksheet 
Dim rw as long 

Set ows = Worksheets("Summary Document") 
Set tws = Worksheets("Worker 1") 

If tws.Range("B10") <> "" Then 
    rw = 10 
Else 
    rw = tws.Range("B9").End(xlDown).Row + 1 
End If 

tws.Range("B" & rw & ":G" & rw).Value = ows.Range("C4:H4").Value 
tws.Range("I" & rw & ":N" & rw).Value = ows.Range("J4:O4").Value 


End Sub 

人们应该总是避免可能的时,使用.Select。请参阅This Link以了解更多选项。

+0

感谢您的快速反应 - 现在完美。简单的代码和链接也非常感谢! – Senstrek

+0

@Senstrek如果这是正确的答案,请考虑通过点击答案中的绿色复选标记来标记为正确。 –

+0

对不起,以为我有 - 非常有用的感谢。 – Senstrek

相关问题