2017-04-11 53 views
0

此問題可以總結如下:enter image description here 只有在運行代碼時纔會出現此問題,而不是在通過chrt.HasTitle -line時逐步執行。在這種情況下,它會正確地創建一個標題,然後我可以編輯它,但是我想要。設置圖表標題僅在Excel 2016中進行調試時才起作用


我先給出相關的源代碼。這隻包括區分Excel 2003和更新版本的代碼(因爲Excel 2003在'新'代碼上崩潰,反之亦然)。

Sub EnableChartTitle(chrt As Chart) 
    If Application.Version = "11.0" Then 
     EnableChartTitle_2003 chrt 
    Else 
     EnableChartTitle_Post2003 chrt 
    End If 
End Sub 

Sub EnableChartTitle_2003(chrt As Chart) 
    chrt.HasTitle = True 
End Sub 

Sub EnableChartTitle_Post2003(chrt As Chart) 
    chrt.SetElement msoElementChartTitleAboveChart 
End Sub 

採用chrt.SetElement前面繞過這個確切問題,但現在似乎又回到了與Office 2016使用舊chrt.HasTitle導致同樣的問題與2016年

此代碼工作完全所有直到Office 2016的Office版本。現在它突然拒絕啓用標題,除非我單步執行代碼,當然這不是預期的用途。

任何人都知道這是什麼和可能的修復? VBA真的讓我很擔心這種事情,Google也很難。 This is where I got the previous solution from.


下面是創建圖表的代碼:

Dim chrt As Chart 
RI.rSheet.Activate 
Set chrt = Charts.Add.Location(xlLocationAsObject, RI.rSheet.Name) 

然後它的位置被設置,任何一系列已自動添加被去除,並且新的數據使用chrt.SeriesCollection.Add <range>加入。

注意:完全相同的代碼在另一個腳本中有效。這是因爲這裏只添加了一個系列。設置系列的名稱時,Excel會自動啓用標題。在這個腳本中,添加了多個系列,並且一旦添加了第二組數據,標題就會再次自動刪除。然後它不會再啓用它。

+0

只是爲了排除非程序化的解決方案,你爲什麼要啓用一個標題,而不是僅僅有一個擺在首位? – Absinthe

+0

因爲一切都以編程方式完成。這個腳本的目的是創建大量的工作簿,而無需任何手動干預。我已經向該問題添加了代碼以顯示如何創建圖表。 – Didii

回答

0

我找到了答案。你必須先告訴VBA兩次他在收聽之前必須做的事情。更改代碼只需

Sub EnableChartTitle_Post2003(chrt As Chart) 
    chrt.SetElement msoElementChartTitleAboveChart 
    chrt.SetElement msoElementChartTitleAboveChart 
End Sub 

修復了這個問題。

這個答案是根本不能讓人滿意......

相關問題