ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论]Chart,ChartObjects,Shapes的关系

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-10-15 10:43 | 显示全部楼层 |阅读模式

我先在Sheet1上建一张Chart,然后输出Chart.Name为: Sheet1 图表 1

然后我用For Each chrt In ChartObjects 和 Sheet1.Shapes 输出名字均为:Chart 1

问题1:为什么我对同样的Chart对象输出的名字不一样?分别为:Sheet1 图表 1 和 Chart 1

问题2:我用我用For Each chrt In ChartObjects 和 Sheet1.Shapes 均可输出chrt.Name. Chart 属于ChartObject 这一点毫无疑问。问题是Chart 也属于 Shapes 对象吗? 那ChartObject 和 Shapes 又是什么关系?(并行,还是从属?这个问题把我搞糊涂了。)

问题3:我再用宏录制记录了一个Acitvate这个Chart的宏,代码如下: ActiveSheet.ChartObjects("图表 1").Activate 问题再次出现,之前我们使用For Each chrt In ChartObjects 输出的名称为:Chart 1,这里ChartObjects 里面的名字竟然是"图表 1".

到底这些是什么关系?希望高手解惑之!谢谢。

'所有代码如下:
Sub Macro1()
Dim chrt As Variant
        Charts.Add
        ActiveChart.ChartType = xlXYScatterSmooth
        ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
       
MsgBox ActiveChart.Name                              '输出结果为: Sheet1 图表 1

For Each chrt In Sheet1.ChartObjects
        MsgBox chrt.Name                                  '输出结果为: Chart 1
Next

For Each chrt In Sheet1.Shapes
        MsgBox chrt.Name                                  '输出结果为: Chart 1
Next
End Sub


Sub Macro2()

    ActiveSheet.ChartObjects("图表 1").Activate

End Sub

[此贴子已经被作者于2008-10-15 10:44:24编辑过]

TA的精华主题

TA的得分主题

发表于 2008-10-15 11:21 | 显示全部楼层

可以是对象ChartObject或者Shape

中文版里面:图表 1 = Chart 1

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-10-15 11:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
QUOTE:
以下是引用snood在2008-10-15 11:21:00的发言:

可以是对象ChartObject或者Shape

中文版里面:图表 1 = Chart 1

中文版里面:图表 1 = Chart 1

难道Chart 有LocalName这个属性吗?我查了好像没有。

那ChartObject 和 Shape 是什么关系呢?难道是根本没有关系,Chart 都从属于它们?

TA的精华主题

TA的得分主题

发表于 2012-9-4 13:23 | 显示全部楼层
测试如下:
Sub a()
Dim o As ChartObject
For Each o In ActiveSheet.ChartObjects
    Debug.Print o.Name
Next
输出:
Chart 7
Chart 8
-------------------------------------------------------------------------------------------------------------------------
Sub b()
Dim o As Shape
For Each o In ActiveSheet.Shapes
    Debug.Print o.Name
Next
输出:
Chart 7
Chart 8
Picture 9
Straight Connector 11
---------------------------------------------------------------------------------------------------------
总结:shapes包含jpg图像,矢量图等对象;chartobjects只包含ObjectChart对象。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-19 15:03 , Processed in 0.026010 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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