この問題は次のように要約できます。
この問題は、コードを実行した場合にのみ発生し、chrt.HasTitle
-line をステップ実行した場合には発生しません。その場合、タイトルが正しく作成され、必要に応じて編集できます。
まず、関連するソース コードを示します。これには、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 も非常に困難です。これは、以前のソリューションから得た場所です。
チャートを作成するコードは次のとおりです。
Dim chrt As Chart
RI.rSheet.Activate
Set chrt = Charts.Add.Location(xlLocationAsObject, RI.rSheet.Name)
次に、その場所が設定され、自動追加されたシリーズが削除され、新しいデータが を使用して追加されchrt.SeriesCollection.Add <range>
ます。
注意: まったく同じコードが別のスクリプトで機能します。これは、ここではシリーズが 1 つしか追加されていないためです。シリーズの名前を設定すると、Excel は自動的にタイトルを有効にします。このスクリプトでは、複数のシリーズが追加され、2 番目のデータ セットが追加されるとすぐに、タイトルが再び自動的に削除されます。その後、再び有効にすることはありません。