• ベストアンサー

エクセルVBAを遅くしたい

VBAでの画面描写を意図的に遅くできますか? アニメーションみたいな動きができると 最高なんですが・・・

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

No1です。 No2さんのおっしゃる通り、「遅く」ではなく「一時停止」ですが、コマ送りには使えると思います。 こんな感じです。 Sub Macro1() Set Sh = ActiveSheet.Shapes.AddShape(msoShape5pointStar, 200#, 100#, 60#, 60#) With Sh .Fill.Visible = msoTrue .Fill.Solid .Fill.ForeColor.SchemeColor = 13 .Line.Weight = 0.75 .Line.DashStyle = msoLineSolid .Line.Style = msoLineSingle .Line.Visible = msoTrue .Line.ForeColor.SchemeColor = 64 For n = 1 To 72 .IncrementRotation 5 DoEvents Sleep 10 Next .Delete End With End Sub Sleepを消してやってみると違いが良くわかります。

yanyanyanyan
質問者

お礼

大変遅くなりましたがみなさん ありがとうございました。 乱数を使ってくじ引きを作る時 派手に画面を「パカパカ」させたかったんです。 うまくいかずすぐに僻地出張させられてしまい(ToT) こんなにお礼が遅くなりました。 早速やってみました。派手に動く「くじ引き」を見て 少し泣けてきました。

その他の回答 (2)

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.2

遅くは無理ですよ。 Sleepなどを使ってもそれは一時停止させるだけですから。 例えばコマ送りを再現したいのなら、まずコマ送り用の画像を数十枚予め作成して、それを次々に描写するとかになります。

回答No.1

まず、標準モジュールの一番上に下記をコピー&ペーストしてください。 Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 次に、お書きのVBAのなかで動きをちょっととめたい部分に DoEvents Sleep 100 と入れてみてください。 これで0.1秒程度止まります。 Sleep 1000 で1秒止まります。

関連するQ&A