vba 错误 要求对象

SubLastRow()Fori=1To38Worksheets("bayujiaozi").Cells(i,"A").Value=Sheet1.Cells(i*8,"G... 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里。但是这个代码报错啊
展开
 我来答
iisheng
2012-11-21 · TA获得超过308个赞
知道小有建树答主
回答量:531
采纳率:100%
帮助的人:478万
展开全部
你的这段代码是没有错的;
但是
你的代码要放在 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
niceasdfa11
推荐于2016-01-06 · TA获得超过262个赞
知道小有建树答主
回答量:444
采纳率:100%
帮助的人:354万
展开全部
for i = 1 to 38
sheets("bayujiaozi").cells(i,1)=sheet1.cells(i*8,7)

next i

你要确定你后面的那个sheet1 在vba的属性那里是sheet1
而不是excel下方那里写的sheet1
实在不行你就都用sheets("...") 这样就不会出错了
追问
下表越界了
追答
你把表发过来 我给你看看
howcanilose@sina.com
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiangjuan314
2016-03-02 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2842万
展开全部

很明显这句话有问题

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

正确用法:

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

说明:

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

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

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱栀竹的人
2012-11-15 · TA获得超过1352个赞
知道大有可为答主
回答量:1743
采纳率:0%
帮助的人:988万
展开全部
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
试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式