発生している問題
VBAで「グラフを作成・加工し、その良し悪しをmsgbox上で判定する」というマクロを作っています。
Excel2013ではうまくいっていたのですが、Excel2016になってから「msgbox表示の際に、グラフ描画処理が終わっていない」という問題が発生しています。
具体的な処理内容は以下の3つです。
- 散布図の作成
- 散布図のうち、1点のマーカーサイズを大きくする
- Yes/Noのmsgboxを表示
問題は、3でmsgboxが表示される時、表示されているグラフが2の処理をされていないことです(参考図1)。
なお、msgboxを閉じると、描画処理後のグラフが表示されます(参考図2)。
VBA
1Sub Macro2() 2' 3' Macro2 Macro 4' 5 6 '1. 散布図の作成 7 Range("B4:C10").Select 8 ActiveSheet.Shapes.AddChart2(240, xlXYScatter).Select 9 ActiveChart.SetSourceData Source:=Range("Sheet1!$B$4:$C$10") 10 ActiveChart.FullSeriesCollection(1).Select 11 With Selection 12 .MarkerStyle = 8 13 .MarkerSize = 4 14 End With 15 16 '2. 散布図のうち、1点のマーカーサイズを大きくする 17 ActiveChart.FullSeriesCollection(1).Points(2).Select 18 Selection.MarkerSize = 10 19 20 '3. Yes/Noのmsgboxを表示 21 ans = MsgBox("グラフチェック", vbYesNoCancel, "描画の良し悪しの判定") 22 23End Sub
試したこと
・ステップ実行する →正常に動作する
・MsgBoxの前にDoEventsを入れる →変わらない
・MsgBoxの前にwait処理を入れる →変わらない
https://teratail.com/questions/105469
Excel2016で発生したこと、ステップ実行でうまくいくことから、こちらの事例と近いのではないかと考えました。
「タイミングの問題でうまくいかない」という指摘から、MsgBoxの処理を遅らせようとしましたがうまくいきませんでした。
以上の問題に対し、解決策をご教示いただければ幸いです。
参考図
図1:msgbox表示時のグラフ(マーカーサイズがすべて同じ)
図2:msbboxを閉じた後のグラフ(1点のマーカーサイズが大きい)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/26 05:55 編集