当一个工作表合并单元格时,用于从一个Excel工作表复制到另一个工作表的宏

时间:2015-09-08 12:09:34

标签: excel vba

我已经在Excel 2013中使用此模板已有一段时间了。我已经从这里和其他网站使用了几个不同的建议,仍然无法使其工作。 在理想的世界中,这将是一个模板,我在输入数据后打印第一张纸,点击宏按钮,然后将某些单元格数据保存到下一页,名为“log”。日志中的数据将随着时间的推移而编译,而主页将被更改,然后作为数据表打印。

由于某些原因使用此代码,我的数据总是在列的最后一行结束。第一次运行宏后,我也无法继续添加数据。我使用名称而不是单元格区域,因为我认为这可能有助于处理我正在复制的合并单元格。一旦在日志表上填充列,它也会抛出错误。任何建议都会很棒,因为我对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

1 个答案:

答案 0 :(得分: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