作者jasonhsu14 (14号星期五的杰森)
看板Office
标题[算表] VBA 侦测图表是否存在
时间Sun Apr 12 15:07:56 2020
软体:Excel
版本:2003
各位版友好,这边有个问题想请教
小弟目前拜访google大师後,学会用VBA创造图图表,目前方法如下
Dim MyChart as ChartObject
x=300 : y=16.5 : w=800 : h=500
Set MyChart = Sheet1.ChartObjects.Add(x,y,w,h)
MyChart.Name="name"
那这边有个问题是,假如我重启这个Excel档,我该如何侦测这个图表是否存在?
那有google到的写法是 (不过这写法 我执行会错误...)
Dim targetChart as ChartObject
set targetChart = Sheet1.ChartObjects("name")
if targetChart is nothing then ....
看起来是在设定另一个chartObject,然後指定他为Sheet1的"name"这个Chart
接着检查这名为"name"的Chart是否有东西
不过执行上会跑出ChartObjects物件失败..所以才想请教於版友们
另外有个问题想问的是,当初在google 如何创图时
有看到也些人写法是 Set MyChart = Sheet1.ChartObjects(1)
不过我最初用这方法时,也是会跑出ChartObjects物件失败的错误讯息
所以想另外询问是那个 ChartObjects([index]) 的index是表示甚麽?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.135.101.201 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1586675278.A.692.html
1F:→ soyoso: 判断上面加上on error resume next 04/12 15:17
2F:→ soyoso: index索引值,表该工作表内第几张图表,1表第一张 04/12 15:20
先谢谢你的回答
那另外我想询问,有办法在创造一个ChartObjects时就给定索引值吗??
就像如下,我在set= .......ChartObjects(1).Add 就给定索引值1
Dim MyChart As ChartObject
x = 300: y = 16.5: w = 800: h = 500
Set MyChart = Sheet_IncomeAndGraph.ChartObjects(1).Add(x, y, w, h)
不过上述方法会执行错误
还是要先set MyChart 才能去设定index
若是的话,请问该如何设定
先谢谢你拨空回答
※ 编辑: jasonhsu14 (220.135.101.201 台湾), 04/12/2020 15:34:20
3F:→ soyoso: 更正,於set targetChart...上方加on error resume next 04/12 15:27
4F:→ soyoso: 索引值是第几张,如有二张,那当索引值为1被删除时,原本 04/12 15:38
5F:→ soyoso: 索引值为2的图表这样就会为1 04/12 15:39
6F:→ soyoso: 因此索引值在新增图表时会给予个值,但这个值会因工作表内 04/12 15:43
7F:→ soyoso: 图表的删除时而被调整 04/12 15:43
8F:→ soyoso: 所以以chartobject.name来命名,来针对该图表,才不会因删 04/12 15:46
9F:→ soyoso: 除而被调整 04/12 15:46
原来 index 会自动调整,所以看来以命名的名称来判断比较不会有错
谢谢你
※ 编辑: jasonhsu14 (220.135.101.201 台湾), 04/12/2020 16:10:29