###前提・実現したいこと
vbaでグラフを表示するコードを書いています。
しかし、空のグラフを作成して折れ線グラフを表示したあとに、プロットエリアの内部のサイズを設定しようとすると実行時エラーが発生します。
さらに、内部サイズ設定前に現在の内部サイズをイミディエイトウィンドウに表示するコードを1行挿入すると、実行時エラーは発生しなくなります。
このエラーの発生理由に心当たりのある方はいらっしゃいますでしょうか。
###発生している問題・エラーメッセージ
該当ソースコードの下部、.PlotArea.InsideLeft
などを設定するところで、以下のように実行時エラーが発生します。
しかし、それらを設定する前に、Debug.Print .PlotArea.InsideWidth
のように内部サイズをイミディエイトウィンドウに表示させるコードを1行挿入すると、エラーが発生せずにコードを最後まで実行することができます。
また、この実行時エラーは第1軸のみのグラフを作成するときに発生するのですが、第1軸と第2軸も表示したグラフを作成した際には発生していないです。
実行時エラー'-2147467259 (80004005)' 'InsideLeft' メソッドは失敗しました: 'PlotArea'オブジェクト
###該当のソースコード
vba
1 '空のグラフ作成 2 With ActiveSheet.ChartObjects.Add(ActiveCell.Left, ActiveCell.Top, GRAPH_WIDTH, GRAPH_HEIGHT).Chart 3 .ChartType = xlLine '折れ線グラフ 4 'データ系列作成 5 '第1軸 6 With .SeriesCollection.NewSeries 7 .XValues = timeArray 8 .Values = yFirstArray 9 .Name = nameArray(1) 10 End With 11 12 '第2軸 13 With .SeriesCollection.NewSeries 14 .XValues = timeArray 15 .Values = ySecondArray 16 .Name = nameArray(2) 17 .AxisGroup = xlSecondary '第2軸に 18 End With 19 End With 20 21 'プロットエリアの内部サイズ揃える 22 With ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Chart 23 .Legend.Position = xlLegendPositionTop '凡例を上側に 24 'Debug.Print .PlotArea.InsideWidth 25 .PlotArea.InsideLeft = GRAPH_WIDTH * 0.05 '←エラー発生箇所 26 .PlotArea.InsideTop = GRAPH_HEIGHT * 0.1 27 .PlotArea.InsideWidth = GRAPH_WIDTH * 0.85 28 .PlotArea.InsideHeight = GRAPH_HEIGHT * 0.85 29 End With
###試したこと
1.
エラー発生箇所辺りのDebug.Print
のところで、代わりに.Activate
や.Select
を実行すると、実行時エラーは発生せず成功した。
ここのコードをエラー発生箇所辺りで実行して、内部エリアを破線で囲んだ図形を追加。
第1軸のみのグラフでは正しく内部エリアを囲む図形が描画された。
第2軸も存在するグラフでは描画されているはずの破線の図形が見当たらなかった。
実行時エラーは第1軸のみのグラフを作成するときに発生するが、これが関係あるかは不明。
###補足情報(言語/FW/ツール等のバージョンなど)
Windows10
Excel 2013
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。