关于VBA offset语法

来源:百度知道 编辑:UC知道 时间:2024/09/24 02:31:10
求职各位高手

以下这行代码,语法错在哪里啦?系统一直提示语法错误。
Range("C1").Offset(Rowoffset:=lastrow)

我整一段的代码是这样编写的:(我想把sheet1上的B列开始的1列列按顺序依次贴在sheet2中的C列,就是把原先的很多列,统统贴在一列里)
lastrow = Worksheets("sheet2").Cells(Rows.Count, 3).End(xlUp).Row
For w = 2 To 500
Worksheets("Sheet1").Select
Range(Cells(w, 2), Cells(w, 100)).Select
Selection.Copy
Worksheets("Sheet2").Select
Range("C1").Offset(Rowoffset:=lastrow)
Selection.PasteSpecial
Next w

麻烦大家指点一下,十分感谢!

不知有没有什么明显错误

代码改成下面的就可以了
Option Explicit

Sub test()
Dim w As Integer
For w = 2 To 500
Worksheets("Sheet1").Range(Cells(w, 2), Cells(w, 100)).Copy Destination:=Worksheets("Sheet2").Range("C" & w - 1)
Next w
End Sub

你的那句 Range("C1").Offset(Rowoffset:=lastrow)
应该改成Range("C1").Offset(Rowoffset:=lastrow).select
要不的话就不存在 selection了,所以下面的一句就没法运行
Selection.PasteSpecial

另外,录制宏虽然是学习vba的最直接方法,但是建议还是多看看专门的数,

宏录制有很多冗余和弱智的语句会浪费很多时间和资源。