- ベストアンサー
エクセルVBA プログレスバー表示について
いつもお世話になります。 ワークシート関数の計算中に、プログレスバーの目盛りを進めることは出来るでしょうか。 というのは、マクロで約1200行×50列=60000個のセルにワークシート関数(SUMPRODUCT関数などの、かなり時間のかかる関数が多く含まれています)を書き込んでいるのですが、中々計算が終わらないので、固まっているように見えるのです。 以上宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >まだまだ道のりは長いですね。そこまで極める必要もないかもですけど。 私もそれでよいのだと思います。覚えたころには、また、本体そのものが、まったく別のものになっている可能性があります。今の形態で、10年続きましたから、そろそろ寿命かもしれないなって思っています。VBAは、Visual Basic 6 の弟っていうところで、 本家は、.Netという、もう別のところに行ってしまいましたからね。 様相が変わるときって、いっぺんに変わります。Microsoft 社には、そういう前科が、何度もあります。例えば、Excel Ver 4 とVer 5 ぐらい変わってしまったら、とても、すぐに覚えられるものではありません。Excelのプロの方たちは、もう先の勉強をされていると思います。大混乱させられますから。 Office側は、Visual Studio Tool に移行しつつあるような噂も聞きます。そういう様子を見ながらがよいのではないでしょうか? >近い将来に買い替えると思うので、出来れば2003年版を買いたいのですがいかがでしょう? 2003版 のほうがよいと思います。私は、結局は、買い換えることになりましたが、内容的にはほとんど変わっていませんでした。大部分の主要なところは、ほとんど変わっていません。私自身のVBAの、経歴は短いけれども、その移り変わりだは、人の話も含めて、なんとなく見てきました。
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 最初に、 >エクセルがフリーズしていないことと、マクロが終了したことが分かれば良いのです。(何らかの図柄が動いているとか) それで、「わたし流」なのですが、まず、マクロの終了については、私は、Msgbox ではなくて、最後に全てが終わったら、「Beep」を入れています。 それで、だいたい、終了が何分も掛かるようですと、全体的な問題があると私は考えるですが、ループなどに、1000回に1度ぐらいに、やはり、「Beep」 を入れて、ハングしていない合図にしています。(例:If i mod 1000 =0 Then Beep)トラブルが起こっている時は、絶対に、「Beep」は鳴らないからです。もちろん、視覚的に Cell上にカウンタを出してもよいかと思います。 >ご回答の中で紹介していただいた書籍は、Wendy02様もお持ちのものですか? Mougの大村さんの著書ので、これは、定番ということだと思います。いろいろ本をあたって、この本でVBAを覚えました。全部で、3部になりますが、これを全部読み終わって、初級終了というところだと思います。 3部の中で、「Excel2003 VBA コントロール・関数編」が、一番、とっつきにくいですね。(Excel 2002版もまだ手に入るはずです。) この上の段階になると、急に難しくなって、Excelだけで収まらなくなってしまいますし、本にはないことが多いので、どうしても、マイクロソフトサイトのMSDN が必要になります。 Amozon:
補足
ご回答ありがとうございます。早速試してみます。 質問ですが、私は現在エクセル2000を使っているのですが、2002や2003版を購入しても全然使えないですか?それともたまに問題がある程度ですか?近い将来に買い替えると思うので、出来れば2003年版を買いたいのですがいかがでしょう? >これを全部読み終わって、初級終了というところだと思います。 それで初級終了ですか・・・。 まだまだ道のりは長いですね。そこまで極める必要もないかもですけど。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 検索しても出てきたはずですが、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=405615 ここの#3 の方は、以下から写したものです。 『かんたんプログラミング Excel VBA コントロール・関数編』大村あつし著 (技術評論社) 第二章の中の、「ラベルをプログレスバーとして利用する」 ですが、Excelでは、プログレスバーを出したところで、負荷がかかるだけで、計算スピードを落とすようなものです。 >マクロで約1200行×50列=60000個のセルにワークシート関数(SUMPRODUCT関数などの、かなり時間のかかる関数が多く含まれています) コードを見なければなんとも言えませんが、処理スピードを上げることを優先したほうがよいのではないでしょうか?
補足
早速のご回答ありがとうございます。 プログレスバーでなくても、エクセルがフリーズしていないことと、マクロが終了したことが分かれば良いのです。(何らかの図柄が動いているとか) 処理を遅くしてしまうのは避けたいので、プログレスバー以外で、方法はありませんでしょうか? P.S ご回答の中で紹介していただいた書籍は、Wendy02様もお持ちのものですか? でしたら、ぜひ購入させていただきたいと思います。 私は、最初にマクロの入門書を購入した後、良い書籍が分からず、中級・上級用の書籍を持っていない状況で、新しい問題が出た度に、手探りで捜したり、このサイトで皆様からご回答をいただいているのですが、いつもご迷惑をおかけして申し訳ないと思っているのです。このような私に、良い書籍がありましたら、お手数ですが紹介していただけませんでしょうか。 本当は処理スピードを上げる方法をご相談したいのですが、マクロが長すぎるので、お見せすることは出来ないですね。
お礼
大変参考になりました。 私もうすうすは、現在のEXCELの環境が様変わりするのではないかと感じていましたが、大変なことですね。日本だけでも何千万人という人がEXCELを使っているでしょうし。 ご丁寧にありがとうございました。