这么简短的一段VBA代码怎么在excel里面总是报错呢
SubCopy()DimiAsIntegerDimjAsIntegerFori=0To3j=3+i*8Sheet1.Range(ActiveCell,ActiveCell...
Sub Copy()
Dim i As Integer
Dim j As Integer
For i = 0 To 3
j = 3 + i * 8
Sheet1.Range(ActiveCell, ActiveCell.Offset(i, 7)).Copy Sheet2.Range(Cells(58, j), Cells(58, j + 8))
Next
End Sub 展开
Dim i As Integer
Dim j As Integer
For i = 0 To 3
j = 3 + i * 8
Sheet1.Range(ActiveCell, ActiveCell.Offset(i, 7)).Copy Sheet2.Range(Cells(58, j), Cells(58, j + 8))
Next
End Sub 展开
5个回答
2013-09-15 · 知道合伙人软件行家
关注
展开全部
你的复制那个代码明显就不对。。。
Sheet1.Range(ActiveCell, ActiveCell.Offset(i, 7)).Copy
这句表示至少复制8列的内容,至少一行。。
Sheet2.Range(Cells(58, j), Cells(58, j + 8))
这个呢,明显是一行,j在i为0-3的时候,依次取值是:3,11,19,26
这连个区域不一致,直接用copy方法是肯定会报错的。。
建议改成:
Sheet1.Range(ActiveCell, ActiveCell.Offset(i, 7)).Copy Sheet2.Cells(58, j)
Sheet1.Range(ActiveCell, ActiveCell.Offset(i, 7)).Copy
这句表示至少复制8列的内容,至少一行。。
Sheet2.Range(Cells(58, j), Cells(58, j + 8))
这个呢,明显是一行,j在i为0-3的时候,依次取值是:3,11,19,26
这连个区域不一致,直接用copy方法是肯定会报错的。。
建议改成:
Sheet1.Range(ActiveCell, ActiveCell.Offset(i, 7)).Copy Sheet2.Cells(58, j)
展开全部
原因在于如果未指定所属对象时, Cells 的作用范围是针对活动工作表(代表活动工作表中所有的单元格),而不是 Sheet2 ,因此
Sheet2.Range(Cells(58, j), Cells(58, j + 8))
这样引用就会出错。可以考虑改为
Sheet1.Range(ActiveCell, ActiveCell.Offset(i, 7)).Copy Sheet2.Range(Sheet2.Cells(58, j), Sheet2.Cells(58, j + 8))
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Sheet1.Range(ActiveCell, ActiveCell.Offset(i, 7)).Copy Sheet2.Range(Cells(58, j), Cells(58, j + 8))这一句改为:
Sheets(1).Range(ActiveCell, ActiveCell.Offset(i, 7)).Copy Sheets(2).Range(Sheets(2).Cells(58, j), Sheets(2).Cells(58, j + 8))
试试。
Sheets(1).Range(ActiveCell, ActiveCell.Offset(i, 7)).Copy Sheets(2).Range(Sheets(2).Cells(58, j), Sheets(2).Cells(58, j + 8))
试试。
更多追问追答
追问
改了之后错误更多了,本来提示的是range作用于worksheet时失败,可能是range用法有问题,怎么看都都看不出问题呀
追答
再试试下面的代码要是还有问题的话就说不清楚了,需要附件测试一下。
Sheets("Sheet1").Range(ActiveCell, ActiveCell.Offset(i, 7)).Copy Sheets("Sheet2").Range(Sheets("Sheet2").Cells(58,j), Sheets("Sheet2").Cells(58,j + 8))
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
需要指定cells是哪个页面上的
Sub Copy()
Dim i As Integer
Dim j As Integer
For i = 1 To 3
j = 3 + i * 8
Sheet1.Range(ActiveCell, ActiveCell.Offset(0, 7)).Copy Sheet2.Range(Sheet2.Cells(58, j), Sheet2.Cells(58, j + 8))
Next
End Sub
Sub Copy()
Dim i As Integer
Dim j As Integer
For i = 1 To 3
j = 3 + i * 8
Sheet1.Range(ActiveCell, ActiveCell.Offset(0, 7)).Copy Sheet2.Range(Sheet2.Cells(58, j), Sheet2.Cells(58, j + 8))
Next
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
修改成:Sheet1.Range(ActiveCell, ActiveCell.Offset(i, 7)).Copy Sheet2.Cells(58, j)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询