作者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/m.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