对EXCEL VBA中引用表的困惑

图中的表,如“最终应开机名单”,它的索引编号是6,我的问题是1、它前面是sheet5这是代表什么呢?2、在宏所在工作簿里,我可以用Sheet5.Cells(3,3)="o... 图中的表,如“最终应开机名单”,它的索引编号是6,我的问题是
1、它前面是sheet5这是代表什么呢?
2、在宏所在工作簿里,我可以用Sheet5.Cells(3, 3) = "ok"这么来引用表不会出错,但如果是宏在另一个表,那个表打开这个文件,就必须用它的索引编号或者表名来引用,比如sheets(6)或者sheets("最终应开机名单"),用worksheets("11111.xls").sheet5.cells(3.3)就会报属性或方法不可用,这是为什么呢?
3、如果我想用sheet5.cells(3.3)表示应该怎么写呢?
展开
 我来答
crazy0qwer
2013-10-31 · TA获得超过3299个赞
知道大有可为答主
回答量:4020
采纳率:71%
帮助的人:1310万
展开全部

打开你的代码界面,看到下图位置

在这里,每个工作表都i有两个名字,这两个名字都可以表示工作表,但是表示方法不一样。

前面的 sheet1 就是 sheet1.cells() 这种表示方法,

而括号内的名称 如 sheet3 ,应该这样:sheets("sheet3").cells

也就是说对于下图来说,一般 sheet1.cells 和 sheets("sheet3").cells  这两种表示方法都是表示同一个工作表。



再看看下图:

sheet5.cells  这里的 sheet5 这个名称是通过VB编辑器中的属性来修改的。

而 sheets("sheet5").cells  这个名称则是通过工作簿下方的标签来修改的。

追问
那在其他工作簿引用 这个表的时候为什么不能用sheet5这种表示方法呢,必须用它索引编号6或者是表名来引用,如我的提问2和3
追答
这个是规定。
跨工作簿不能用CodeName, 也就是 你说的 sheet5 这种表达方式。
COUNTIFABS
2013-10-31 · TA获得超过2154个赞
知道大有可为答主
回答量:1594
采纳率:55%
帮助的人:1229万
展开全部
图没有呢
1、sheet5就是工作表从左到右第5个工作表,如果你只有三个表,肯定会出错的。你试一下;
2、worksheets("11111.xls")有没有5个表呢?应该没有吧。你可以写成worksheets("11111.xls").sheets("工作表名").cells(3,3)

3、还是一样,确保有5个工作表,就可以这样写,也可以写成sheets(5).cells(3.3),一样的
追问

我忘记上图了

看了一下“最终应开机名单”是从左到右的第6个表,所以它的索引编号是6,但它前面又是显示sheet5所以我的困惑在这里!

 

 

追答
按序排列的。正常。

一般你新建的工作表sheet1=序号1
sheet2=序号2
sheet3=序号3

如果打乱了,就不一样了。

所以,我们一般代码对需求引用到工作,建议使用sheets("工作表名").cells(1,1) 这样的方式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kwgeji
2013-10-31 · TA获得超过223个赞
知道小有建树答主
回答量:434
采纳率:100%
帮助的人:276万
展开全部
首先,11111.xls 这个文件必须是打开状态

Workbooks("11111.xls").Sheets("Sheet1").cells(3.3)
或者
Workbooks("11111.xls").sheet5.cells(3.3)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TAT萝卜
2013-10-31 · TA获得超过4972个赞
知道大有可为答主
回答量:3084
采纳率:66%
帮助的人:1108万
展开全部
显然问题出在worksheets("11111.xls"),应该是workbooks("11111.xls")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式