ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 10679|回复: 10

[求助] 奇怪的VBA语法 Sheets.Add.Name = “SHEET1” 这句话中出现了两个点号(即.Add.Na...

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-7-24 13:26 | 显示全部楼层 |阅读模式
奇怪的VBA语法 Sheets.Add.Name = “SHEET1”
这句话中出现了两个点号(即.Add.Name ),如何理解这种用法
vba 对象.方法,怎么可以还在对象.方法加属性呢

TA的精华主题

TA的得分主题

发表于 2015-7-24 13:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sheets.Add产生一个sheet对象,.Name = “SHEET1” 对此对象命名?

是不是类似:
With Sheets.Add
    .Name = "SHEET1"
End With

TA的精华主题

TA的得分主题

发表于 2015-7-24 14:53 | 显示全部楼层
Sheets.Add.Name = “SHEET1”    等于   Sheets.Add().Name = “SHEET1”

Sheets.Add(after:=Sheets(Sheets.Count), Count:=1, Type:=xlWorksheet).Name = "SHEET1"   这样看得懂吧?
上面只是省略了参数,使用默认参数,因此括号内没有内容,所以可以省略括号.

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-24 15:48 | 显示全部楼层
ili 发表于 2015-7-24 14:53
Sheets.Add.Name = “SHEET1”    等于   Sheets.Add().Name = “SHEET1”

Sheets.Add(after:=Sheets(S ...

我知道是省略了参数,我的疑问是,VBA里一般不都是对象.方法单独作为一句结束,例如,range("a1").select,那为什么Sheets.Add.Name = “SHEET1” 这句方法add后面还可以加属性啊?谢谢你的耐心回答

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-24 15:51 | 显示全部楼层
liulang0808 发表于 2015-7-24 13:35
Sheets.Add产生一个sheet对象,.Name = “SHEET1” 对此对象命名?

是不是类似:

是啊,为什么可以这样做啊?VBA里一般不都是对象.方法单独作为一句结束,例如,range("a1").select,那为什么Sheets.Add.Name = “SHEET1” 这句方法add后面还可以加属性啊?谢谢你的耐心回答

TA的精华主题

TA的得分主题

发表于 2015-7-24 15:58 | 显示全部楼层
dayaiyang 发表于 2015-7-24 15:48
我知道是省略了参数,我的疑问是,VBA里一般不都是对象.方法单独作为一句结束,例如,range("a1").select ...

Sheets.Add()  返回的就是一个对象,所以后面跟个属性没有什么问题。

Range("a1").Parent.Range("a1").Parent.Range("a1").Parent.Range("a1") = "aa"  这样写都没什么问题。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-24 16:14 | 显示全部楼层
ili 发表于 2015-7-24 15:58
Sheets.Add()  返回的就是一个对象,所以后面跟个属性没有什么问题。

Range("a1").Parent.Range("a1") ...

vba 对象.方法不是一个动作么?动作还有返回值啊?所有的方法都有返回值么?我在立即窗口输入?range("a1").select 结果是true ,这是select 的返回值么?谢谢你

TA的精华主题

TA的得分主题

发表于 2015-7-24 16:26 | 显示全部楼层
dayaiyang 发表于 2015-7-24 16:14
vba 对象.方法不是一个动作么?动作还有返回值啊?所有的方法都有返回值么?我在立即窗口输入?range("a1" ...

大部分方法都有返回值的。你自己看看对应帮助就好了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-24 16:28 | 显示全部楼层
ili 发表于 2015-7-24 16:26
大部分方法都有返回值的。你自己看看对应帮助就好了。

我在立即窗口输入?range("a1").select 结果是true ,这是select 的返回值么?这个怎么理解啊

TA的精华主题

TA的得分主题

发表于 2015-7-24 16:52 | 显示全部楼层
dayaiyang 发表于 2015-7-24 16:28
我在立即窗口输入?range("a1").select 结果是true ,这是select 的返回值么?这个怎么理解啊

QQ截图20150724164801.jpg

有些东西没有意义,没有必要刨根问底。

  1. Sub AAA()
  2.     On Error Resume Next
  3.     If Sheets("AAA").Select = False Then
  4.         MsgBox "没有名称为 AAA 的工作表"
  5.     End If
  6. End Sub
复制代码



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

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-13 15:55 , Processed in 0.024843 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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