仕事ではExcelVBAを用いて、営業部向け、支店向けの多数のファイルをボタン1つで、自動処理しております。
指定のExcelファイルを自動で開け、データを取ったり処理を施したりして、自動で上書き保存するのが、主な流れですが、実はある問題がありまして。
「保存の時、保存中のウィンドウが出っぱなしになって、手で消さないと先に進まない」
順調に処理を続けていたのに、保存になると、止まってしまう。
ウインドウを消せば再開はするものの、これでは長時間かかっても、放置できない。
これまで作ったツール共通の、悩みだったんです。
それが今日、あるひらめきが、ありまして。
ある命令を保存の前にはさむと、表示されたウィンドウが自動で消え、先に進むようになったんです。
実は、他人に実行させるときに、やっぱり途中で処理が止まってしまうのは問題で、困っていたんです。
たった一行ながら、大きな発見!だったんですよ♪
ちなみに、その命令とは…
「DoEvents」と書きます。
意味ですか?平たく言えば…
「てめぇの仕事をせい!」ってもの。
ハッとしました。
負荷のかけ過ぎ、だったんですね。
コンピューターはプログラムの実行以外にも、いろんな仕事があります。
入力を受け付けたり、画面表示したり。
でも、ExcelVBAはプログラムですから、そりゃあもう、押しが強い強い。
時にはコンピューター本来の仕事をする余裕まで、奪ってしまうんです。
なので、時にはコンピューターをVBAから解放して、自分の仕事をする時間を与える必要も、あるわけです。
押してもダメなら引いてみな。
人生、ですなぁ…。。