• ベストアンサー

ExcelVBA処理経過をリアルタイムにグラフ表示したい

ExcelVBAが、あとどれくらいで終了するか処理経過をリアルタイムにグラフもしくは%で表示させたいのです。 当然、ForやLoop処理などもあるので、何度、繰り返されて、どのくらい時間がかかり、後、どのくらいで終わるのかは、条件によって異なってくると思うので、自分で判定させるようにしなければならないかとは思っていますが・・ ソフトのインストーラーみたいな感じにヴィジュアル的に経過表示をさせたい(%での表示でも良いです)のですが、何か良い方法はありますでしょうか? ご教授いただけると幸いです。 よろしくお願い致します。

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

  • ベストアンサー
  • pauNed
  • ベストアンサー率74% (129/173)
回答No.2

こんにちは。 http://www.h3.dion.ne.jp/~sakatsu/ProgressBarTopic.htm こちらを参考にされると良いと思います。

THUBAN
質問者

お礼

このサイト、なかなか参考になりそうです! 早速、試してみたいと思います。 ありがとうございました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

2-3日前にもプログレスバー関連の質問で、横道に議論が行っていたと思うが、素人的に、この質問に疑問におもい、下記のことの方が重要なのでないかと思って書きます。 所要時間がわかれば、プログレスバー、やステータスバーやグラフ 的にでも表示できると思う。 あるプログラムを実行して、終わるまでの時間は (1)CPUの処理速度 (2)OS (3)インタープリターかコンパイラーか (4)処理ロジックの組み方・利用ファイルシステムの違い (5)入出力装置の入出力能力、そのドライバーソフトの処理具合 (6)他の同時に走っている処理プログラム、その数 (7)処理タスクの優先度設定(どのタスクの優先度を上げるか オペレーターが介入できるOSあり) (8)そのコンピュターのメモリなどリソースの多少 (9)メモリのごみやディスクの記録状況(Defrag的なこと) などなどで左右されると思う。 それで正確には処理完了時間は実行して見るまでわからないと思う。 それが判らないと、 ・動いてます ・時間が経ってます。経過時間が増えてます。 の表示になってしまう。これも大切と思うが。 ーーー それで (1)経験的に過去に複数回時間を計って(上記1-7は自分のパソコンの場合と仮定して)大体の平均時間を出す。 それでスタートから現時点までの経過時間を割って、比率を出し表示する (2)既回答で紹介のあるページの例にあるが、プログラムのコードを見て多数回繰り返しがあり、その処理時間が、全体のメインを占めると考えた場合は、今まで完了した繰り返し回数/全繰り返し回数を途中処理済割合として、コントロール等に通常長さで表示する。 ーー ですから (1)・上記(1)の時間の見積もり    ・スタートから現時点までの経過時間を出すコード    ・プログレスバーコントロールのインストールと    ・長さ設定の仕方       のコードを勉強する (2)処理時間がかかりそうな、繰り返しを見つける。    その何分(10,100,1000分の1とか)の経過ごとに    バーの表示更新の処理に飛ぶやり方の勉強 ということになるのでしょうか。

THUBAN
質問者

お礼

エクセルシート上にある抽出データの量によって、また、実行されるPC環境によって、大きく割合が変わってくると思われますので、あらかじめ比率を出しにくいのですが、参考にさせていただきます。 取り合えず、シート上の行数を1行づつ、なめていくので、処理済行数/総行数で、割合を表示させることとしました。 ありがとうございました。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

M$のページに例があります。 [XL] ユーザー フォームでプログレス バーを表示する方法 http://support.microsoft.com/kb/211736/ja

THUBAN
質問者

お礼

MSのサイトですね。 ぱっと見、わかりにくそうですが、良く読んでみたいと思います。 ありがとうございました。

  • gatyan
  • ベストアンサー率41% (160/385)
回答No.1

取り合えずなら、 Application.Statusbat="10%" とか

THUBAN
質問者

お礼

Application.Statusbatではなくて、 Application.StatusBarですよね? 取り合えずで用いたあと、徐々に高度にしてみたいと思います。 ありがとうございました。