2015-09-08 53 views
0

我一直在Excel 2013中處理此模板一段時間。我從這裏和其他網站使用了幾個不同的建議,但仍然無法實現這個目標。 在理想的世界中,這將是一個模板,可以在輸入數據後打印第一張紙,打開宏按鈕,然後將特定單元格數據保存到名爲「log」的下一張紙上。日誌中的數據將隨着時間的推移而編譯,而主表單將被更改並隨後打印爲數據表。宏從一個Excel表單複製到另一個表單合併單元格時

由於某些使用此代碼的原因,我的數據總是在列的最後一行結束。我也無法在第一次運行宏後繼續添加數據。我使用名稱而不是單元格區域,因爲我認爲這可能有助於優化處理我從中複製的合併單元格。一旦這些列填充到日誌表中,它也會引發錯誤。任何建議將是偉大的,因爲我不是很精通vba!如果將這些日誌從Word模板發送到日誌中會更容易,但我認爲只在Excel中工作會更容易。

謝謝!

Sub Paste() 
Dim LastRow As Long 

LastRow = Sheets("log").Range("A65536").End(xlUp).row + 1 

Sheets("Sheet").Range("ManufactureDate").Copy Destination:=Sheets("log").Range("A2" & LastRow) 
Sheets("Sheet").Range("PartNumber").Copy Destination:=Sheets("log").Range("B2" & LastRow) 
Sheets("Sheet").Range("SampleNumber").Copy Destination:=Sheets("log").Range("C2" & LastRow) 
Sheets("Sheet").Range("ShiftNumber").Copy Destination:=Sheets("log").Range("D2" & LastRow) 
Sheets("Sheet").Range("BatchNumber").Copy Destination:=Sheets("log").Range("E2" & LastRow) 
Sheets("Sheet").Range("LineNumber").Copy Destination:=Sheets("log").Range("F2" & LastRow) 
Sheets("Sheet").Range("AverageHardness").Copy Destination:=Sheets("log").Range("G2" & LastRow) 
Sheets("Sheet").Range("TotalCompression").Copy Destination:=Sheets("log").Range("H2" & LastRow) 
Sheets("Sheet").Range("Length").Copy Destination:=Sheets("log").Range("I2" & LastRow) 
Sheets("Sheet").Range("PostWidth").Copy Destination:=Sheets("log").Range("J2" & LastRow) 
Sheets("Sheet").Range("RailWidth").Copy Destination:=Sheets("log").Range("K2" & LastRow) 
Sheets("Sheet").Range("TotalDepth").Copy Destination:=Sheets("log").Range("L2" & LastRow) 
Sheets("Sheet").Range("Offset").Copy Destination:=Sheets("log").Range("M2" & LastRow) 

End Sub 

回答

0

我不相信你的變量LastRow是正確定義的。嘗試使用下面的代碼。我試了一下,它的工作原理!下面的代碼複製Sheet1上單元格A1的單元格內容並將其粘貼到表單上登錄到列A中的第一個空單元格。您可以輕鬆地將代碼擴展到您的情況。希望這可以幫助。

Sub Paste2log() 

Dim sht As Worksheet 
Dim LastRow As Long 

Set sht = ThisWorkbook.Worksheets("log") 

'Ctrl + Shift + End 
    LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row 

Sheets("Sheet1").Range("A1").Copy Destination:=sht.Range("A" & LastRow + 1) 

End Sub 
+1

'.Range( 「A」 &LASTROW + 1)'只應'LastRow'和'.END(xlUp).Row'應'.Row + 1',這使得它更容易,因爲只有一個代碼行的增量爲「+ 1」,如果在任何時候都需要更改,則只需更改1行,而不是更多。 – DragonSamu

相關問題