[備忘] Excel VBA-如何判斷 ChartObject 是否存在

當利用 VBA 新增一 ChartObject,如下:

Dim chobj As ChartObject
Set chobj = Worksheets("Sheet1").ChartObjects.Add(50, 40, 400, 200)
chobj.name = "chart1"

則該 Excel 工作表關閉後,該 ChartObject 仍然存在。可以想像工作表關閉後,在工作表內所包含的工作表 (Worksheet)、圖表等物件生命仍存在 (除非物件被 Destroy),它只是被永續冬眠 (hibernate)至檔案資料庫內,待開啟檔案後,這些物件會再次的活化 (Activation)。

問題:如果手動刪除掉該 ChartObject,該如何在 VBA 程式內判斷已不存在,而需要自動再新增同名的 ChartObject?

解決方案:程序內需要宣告「On Error」陳述,然後利用任一陳述式(statement,如 If or With) ,可直接參考 (reference)到該 ChartObject。若不存在,則該陳述會發生錯誤,然後再判斷該錯誤代碼,在錯誤區塊 (block)內新增同名的 ChartObject。

說明:

閱讀全文 »

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal