- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【UserFormラベルに状況を随時表示したい】)
ExcelVBAでUserFormを使用したツールで処理中の進捗を表示したい
このQ&Aのポイント
- ExcelVBAを使用してUserFormを使ったツールを作成しています。特定のコマンドボタンを押した時に、Excelファイルを複数開き、集計処理を行い、結果をCSVファイルに出力します。しかし、処理時間がかかるため、進捗状況をUserFormのラベルに表示したいのですが、実際に実行してみると、UserFormが真っ白になってしまいます。
- ExcelVBAを使用し、UserFormを使ったツールを作成中です。特定のコマンドボタンを押すと、Excelファイルを複数開き、集計処理を行い、その結果をCSVファイルに出力します。しかし、処理に時間がかかるため、進捗状況をUserFormのラベルに表示したいのですが、UserFormが真っ白になってしまいます。
- ExcelVBAを使ってUserFormを使用したツールを作成しています。特定のコマンドボタンを押した時に、Excelファイルを複数開き、集計処理を行い、結果をCSVファイルに出力します。しかし、処理には時間がかかるため、進捗状況をUserFormのラベルに表示したいのですが、実行してみると、UserFormが真っ白になってしまいます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 >Excelファイルを開いた時点で、制御がExcelファイル側に入ってしまい、UserFormが真っ白に表示されてしまいます。 やってみましたが、再現性がないですね。ただ現象はわかります。大きな処理のものでないと出ないようです。たぶん、制御がExcelのブック側に入るのではなくて、Userform の画面の戻りができなくなって、Excelのブック側に取られているのではないでしょうか? UserForm を開いていて、ふたたびアクティブにするのは、 Workbooks.Open (FileName) myTitle = Me.Caption AppActivate (myTitle) なんていうことをしますが、なんとなく、こういうことではないような気がしています。もう少し、全体的な処理なんだろうなって思います。ブック自体を Visible = False にしてしまい、処理が終わったら、戻るようなほうが、なんとなく楽なような気がします。 あんまり姑息なことをすると、ハングしそうな気がします。 それから、進捗状況は、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=405615 #3 出典: 『かんたんプログラミング Excel VBA コントロール・関数編』大村あつし著 (技術評論社)第二章の中の、「ラベルをプログレスバーとして利用する」 なんていうのが、Excelでラベルをプログレスバーに使う方法があります。ただ、状況にもよりますから、メモリ喰いなるようだったら、あまり賛成できないです。 一度、作動中のメモリを監視したほうがよさそうです。
お礼
的確なアドバイスをありがとうございます。 ご指摘の通りで、とっても負荷がかかる処理を行っています。 提示していただいたURLを参考にしてみます。 どうもありがとうございました。