我必须使用VBA在Excel中将某些数据从工作表复制粘贴到另一个工作表中。 我已经能够将工作表A的第一组数据复制粘贴到工作表B,而不会出现问题。 现在,我需要将工作表A中的相同单元格值复制到工作表B中的范围
我试图定义工作表B中的最后一个单元格和工作表B中的第一个单元格,以便定义应该复制工作表A中的值的范围。
这是lastrow的代码(工作正常)
Last_Row2 = Sheets("Records").Range("a1").End(xlDown).Row
起始单元格的代码
legrng = Sheets("Records").Cells(Rows.count, 4).End(xlUp).Offset(1)
将值粘贴到范围内的代码
Range("LegRng & Last_row2").Copy Destination = "cell value in sheet A"
我在这里收到错误消息:
Range("LegRng & Last_row2").Copy Destination = "cell value in sheet A"
错误是:方法'object_global的范围'失败
你能告诉我我在做什么错吗?
感谢您的帮助/说明
答案 0 :(得分:1)
您有几个错误
首先,您尝试引用名称为 LegRng&Last_row2 的范围。这样的范围在您的工作表中不存在,因为该名称是非法的,所以不存在。
如果您要设置对包含多个单元格的范围的引用,请按照以下方式进行操作:
Sheets("Records").Range(startCell, endCell)
因此,首先您需要设置对startCell
和endCell
的引用(我假设您希望最后一个单元格也在第4列中):
Set startCell = Sheets("Records").Cells(Rows.count, 4).End(xlUp).Offset(1)
Set endCell = Sheets("Records").Cells(Last_Row2, 4)
您可以使用值的属性Value
填充范围
rng.Value = "value"
因此,最后,您的代码应如下所示:
With Sheets("Records")
Last_Row2 = .Range("a1").End(xlDown).Row
Set startCell = .Cells(Rows.count, 4).End(xlUp).Offset(1)
Set endCell = .Cells(Last_Row2, 4)
.Range(startCell, endCell).value = "cell value in sheet A"
End With
答案 1 :(得分:0)
如果未包装在测试If Statement
是否小于startCell.Row
的{{1}}中,那么如果重新运行,接受的答案将引起问题,代码会将{{1} },在每次重新运行宏时,都在下一个单元格中。
您应该始终定义和分配变量。
使用Last_Row2
使您不需要value from sheet A
。
从startCell中删除Resize
可确保endCell
的正确计数
Offset