[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAでのグラフの再描画』(とん)
winXPSP3・Excel2007
・やりたい事。VBAでグラフの元データ範囲を移動して 簡易アニメーションのようにする。
対象は2列一組で「X・Y」の値の入ったデータです。 A列〜任意に数値が入っています。 下記データは=rand()で入れてます。
|[A] |[B] |[C] |[D] |[E] ・・・ [1] |X |Y |X |Y |X [2] |0.508313|0.935429|0.282401|0.971517|0.749494 [3] | 0.55495|0.841119|0.702525|0.879678|0.621428 ・・・ [10]|0.489698|0.167245|0.898965|0.115941|0.083925
A1:B10でデフォルトの散布図を作成し、 XYの軸の最小値・最大値だけ固定します。(0・1)
で、下記コードで横にずらしていくんですけど Application.ScreenUpdatingなしだと、終了するまで グラフが再描画されません。 入れると、まあ当然ですが再描画時にちらつきます。 グラフのreflashでも再描画されず、 なにかなめらかに再描画されるものが無いかと探してますが 探しきれませんでした。 ご存知のかた、ご教示いただけないでしょうか。
Option Explicit
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub test()
Dim tmpX As Long, tmpY As Long
With ActiveChart
.SeriesCollection(1).XValues = "=Sheet1!R2C1:R10C1" .SeriesCollection(1).Values = "=Sheet1!R2C2:R10C2" End With
For tmpX = 3 To Cells(1, Columns.Count).End(xlToLeft).Column Step 2
tmpY = tmpX + 1
'Application.ScreenUpdating = False
With ActiveChart .SeriesCollection(1).XValues = "=Sheet1!R2C" & tmpX & ":R10C" & tmpX .SeriesCollection(1).Values = "=Sheet1!R2C" & tmpY & ":R10C" & tmpY .Refresh End With 'Application.ScreenUpdating = True Sleep 1000
Next tmpX
MsgBox ("終わったよん")
End Sub
Sleepの前にDoEventsを2回いれてみて (SoyJoy)
おお〜〜!!描画されました。
調べたみたら、OSに処理を渡すみたいですね。 なんで二回?とかわからない部分があるのでちょっと調べてみます。
SoyJoyさん、ありがとうございました! (とん)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.