vba 错误 要求对象

Sub LastRow()

For i = 1 To 38

Worksheets("bayujiaozi").Cells(i, "A").Value = Sheet1.Cells(i * 8, "G").Value
Next i
End Sub
原理很简单 就是把第一个sheet里 G列 的第8行以后每隔8行的数据取出来重新生成1列放在另一个新生成的sheet里。但是这个代码报错啊

你的这段代码是没有错的;
但是
你的代码要放在 sheet名字为“bayujiaozi” 中,且这个表是你放内容的表,
而你要复制的内容应该在Sheet1中,注意,这个Sheet1是表对象,不是表的名称;表的名称是可以重命名的,而这个Sheet1是不能改的,
Sub LastRow()
For i = 1 To 38
Worksheets("bayujiaozi").Cells(i, "A").Value = Sheet2.Cells(i * 8, "G").Value
Next i
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-01-06
for i = 1 to 38
sheets("bayujiaozi").cells(i,1)=sheet1.cells(i*8,7)

next i

你要确定你后面的那个sheet1 在vba的属性那里是sheet1
而不是excel下方那里写的sheet1
实在不行你就都用sheets("...") 这样就不会出错了追问

下表越界了

追答

你把表发过来 我给你看看
[email protected]

本回答被提问者和网友采纳
第2个回答  2016-03-02

很明显这句话有问题

Sheet1.Cells(i * 8, "G").Value

正确用法:

Sheets("Sheet1").Cells(i * 8, "G").Value

说明:

    Sheets:指定工作簿或当前活动工作簿中所有工作表的集合。Sheets 集合可包含 Chart 对象或Worksheet 对象。

    Worksheets:指定工作簿中或活动工作簿中所有Worksheet 对象的集合。每个 Worksheet 对象代表一张工作表。

    Worksheet 对象也是Sheets 集合的成员。Sheets 集合包含工作簿中所有的工作表(包括图表工作表和工作表)。

第3个回答  2012-11-15
Sheet1改写成oWb.Worksheets(1)
owb是workbook对象追问

Worksheets("bayujiaozi").Cells(i, "A").Value = oWb.Worksheets(1).Cells(i * 8, "G").Value

改成这样 还是报错 运行时错误 424 要求对象

追答

哦,改写成
Worksheets(1).Cells(i * 8, "G").Value
试试

追问

现在报出下标越界错误。。

追答

那就是你的循环I*8越界了,

相似回答