Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1666|回复: 6

[已解决]工作表引用问题求助

[复制链接]
发表于 2017-3-1 11:16 | 显示全部楼层 |阅读模式
刚学习VBA,求教:
工作表代码名称为sheet1,名称也是sheet1,第一个工作表
ThisWorkbook.Sheet1.Rows(1).Copy ActiveSheet.Range("a1"),提示编译错误,方法和数据成员未找到。
修改为ThisWorkbook.Sheets(1).Rows(1).Copy ActiveSheet.Range("a1"),
或      ThisWorkbook.(“Sheet1”).Rows(1).Copy ActiveSheet.Range("a1"),
后编译通过。
用工作表代码引用有什么特殊规定?为何会编译不通过。

最佳答案
2017-3-1 21:35
ThisWorkbook完整写法是Application.ThisWorkbook,代表一个Workbook对象
因为Workbook对象的成员中有Sheet属性,所以ThisWorkbook.Sheets代表一个Sheets集合
集合里的元素只有两种表示方式:索引、名称
ThisWorkbook.Sheets(1)
ThisWorkbook.Sheets("Sheet1")
ThisWorkbook.Sheet1,为什么报错?因为集合元素的表示方式,只两种。





生物
  |-- 植物
  |-- 动物
       |-- 猫科
       |-- 犬科



生物
  |-- 植物
  |-- 动物
       |-- 猫科
       |-- 小白(小白是只狗)



显然,后者不合适。
Workbook 对象成员也是如此,并不存在成员Sheet1(某个具体工作表)。


PS:至于为什么集合里的元素只有两种表示方式?我觉着对,还没想到咋证明

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2017-3-1 11:18 | 显示全部楼层
本帖最后由 wenzili 于 2017-3-1 11:20 编辑

更正:是修改为
ThisWorkbook(1).Rows(1).Copy ActiveSheet.Range("a1"),

ThisWorkbook("Sheet1").Rows(1).Copy ActiveSheet.Range("a1"),
编译通过
回复

使用道具 举报

发表于 2017-3-1 12:51 | 显示全部楼层
本帖最后由 ilovelittle 于 2017-3-1 13:08 编辑

sheet1,这个是codename
ThisWorkbook.Sheet1。。这么写的话就是从属关系,事实上他们可能是同级,不是从属关系,所以错了。
应该改成
sheet1.rows(1).copy activesheet.range("a1")
这样就可以了


回复

使用道具 举报

 楼主| 发表于 2017-3-1 13:14 | 显示全部楼层
workbooks 是工作簿,worksheets 是工作表,不是一个级别的呀。
原帖子写错了,应该是改为
ThisWorkbook.worksheets(1).Rows(1).Copy ActiveSheet.Range("a1"),

ThisWorkbook.worksheets("Sheet1").Rows(1).Copy ActiveSheet.Range("a1"),
编译通过
回复

使用道具 举报

发表于 2017-3-1 13:18 | 显示全部楼层
我也看错了,上面我修改过了,就关于sheet1的。
回复

使用道具 举报

发表于 2017-3-1 13:38 | 显示全部楼层
ThisWorkbook.Sheet1.....这个写法是错的
回复

使用道具 举报

发表于 2017-3-1 21:35 | 显示全部楼层    本楼为最佳答案   
ThisWorkbook完整写法是Application.ThisWorkbook,代表一个Workbook对象
因为Workbook对象的成员中有Sheet属性,所以ThisWorkbook.Sheets代表一个Sheets集合
集合里的元素只有两种表示方式:索引、名称
ThisWorkbook.Sheets(1)
ThisWorkbook.Sheets("Sheet1")
ThisWorkbook.Sheet1,为什么报错?因为集合元素的表示方式,只两种。





生物
  |-- 植物
  |-- 动物
       |-- 猫科
       |-- 犬科



生物
  |-- 植物
  |-- 动物
       |-- 猫科
       |-- 小白(小白是只狗)



显然,后者不合适。
Workbook 对象成员也是如此,并不存在成员Sheet1(某个具体工作表)。


PS:至于为什么集合里的元素只有两种表示方式?我觉着对,还没想到咋证明

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-27 01:18 , Processed in 0.356115 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表