0

この問題は次のように要約できます。ここに画像の説明を入力 この問題は、コードを実行した場合にのみ発生し、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 番目のデータ セットが追加されるとすぐに、タイトルが再び自動的に削除されます。その後、再び有効にすることはありません。

4

1 に答える 1

0

答えが見つかりました。彼が聞く前に、VBA に何をしなければならないかを 2 回伝える必要があります。コードを単純に変更する

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

問題を修正しました。

この答えはまったく満足のいくものではありませんでした...

于 2017-04-12T10:45:07.963 に答える