• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【UserFormラベルに状況を随時表示したい】)

ExcelVBAでUserFormを使用したツールで処理中の進捗を表示したい

このQ&Aのポイント
  • ExcelVBAを使用してUserFormを使ったツールを作成しています。特定のコマンドボタンを押した時に、Excelファイルを複数開き、集計処理を行い、結果をCSVファイルに出力します。しかし、処理時間がかかるため、進捗状況をUserFormのラベルに表示したいのですが、実際に実行してみると、UserFormが真っ白になってしまいます。
  • ExcelVBAを使用し、UserFormを使ったツールを作成中です。特定のコマンドボタンを押すと、Excelファイルを複数開き、集計処理を行い、その結果をCSVファイルに出力します。しかし、処理に時間がかかるため、進捗状況をUserFormのラベルに表示したいのですが、UserFormが真っ白になってしまいます。
  • ExcelVBAを使ってUserFormを使用したツールを作成しています。特定のコマンドボタンを押した時に、Excelファイルを複数開き、集計処理を行い、結果をCSVファイルに出力します。しかし、処理には時間がかかるため、進捗状況をUserFormのラベルに表示したいのですが、実行してみると、UserFormが真っ白になってしまいます。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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でラベルをプログレスバーに使う方法があります。ただ、状況にもよりますから、メモリ喰いなるようだったら、あまり賛成できないです。 一度、作動中のメモリを監視したほうがよさそうです。

mari0629
質問者

お礼

的確なアドバイスをありがとうございます。 ご指摘の通りで、とっても負荷がかかる処理を行っています。 提示していただいたURLを参考にしてみます。 どうもありがとうございました。

関連するQ&A