2016-01-13 121 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

相關問題