- ベストアンサー
エクセル マクロ起動中のメッセージを表示したい
いつもお世話になります。 エクセルで、マクロを起動して、動作が終了するのに時間がかかるため、起動中に、「マクロ起動中です」のメッセージが表示されるようにしたいのです。 自分なりに考えて、"A"というメッセージのみのユーザーフォームを作って、マクロの最初と最後に A.show ~中略~ A.Hide としたのですが、表示されたユーザーフォームの×印を押さないとマクロが動きません。 宜しくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#3です。 補足回答が遅くなってごめんなさい。 #4さん、補足回答ありがとうございました。 大きいサイズのファイルのコピー・ダウンロードをする時によく見かける ”■■■■■■□□□□”(現在進捗60%) ってやつです。 ツールボックスにプログレスバーがない場合は、[ツール]-[その他のコントロール]で"Microsoft ProgressBarControl"ってやつにチェックをつけると使えるようになります。バージョンが違うものが何種類かありますので、最新バージョンでいいと思います。 #3を書いておいてなんですが、#2さんのようにするほうがいいと思います。 作るとしたらこんな感じかな?(フォームAにprgBar[Max:100,Min:0で設定]という名前でプログレスバーを作成した場合です。) A.prgBar.Value = 0 A.Show vbModeless ~処理~ A.prgBar.Value = 数値 '0~100の間 ~処理~ A.Hide Unload A
その他の回答 (4)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#3補足>プログレスバー表示 プログレスバーは、プログラムでの進行状況を表す表示です。
お礼
ありがとうございます。 理解できました。
- Musaffah
- ベストアンサー率36% (37/101)
それか、そのフォーム(A.frm)でマクロを実行するようにするのも手かも。 時間がかかるマクロであれば、そのうちプログレスバー表示させたいと言ったさりげない要求も出てくると思いますよ。
補足
ご回答ありがとうございます。 ですが、浅学なものでして、「プログレスバー表示」という言葉の意味がわからないのです。 ネットで検索してみたのですが、今一意味が分かりません。 お手数をおかけして恐縮に存じますが、どのような機能か、どのように使うかを、教えていただけませんでしょうか?
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
A.show vbModeless にします。指定しない場合は、モーダルになっているので、他の操作が行えません。 また、こうすると、フォームの更新がおこなわれなくなるので、 #1さんのようにDoEventsを入れるとよろしいかと思います。
お礼
ありがとうございます。お礼が遅くなりまして申し訳ございませんでした。 ご回答をいただいて直ぐに試してみた所、簡単に上手くいきました。 まだDoEventsを試せていないので、こちらも使えるように頑張ります。
- Wendy02
- ベストアンサー率57% (3570/6232)
サンプルです。 DoEvents を入れるのでは? Private Sub UserForm_Activate() For i = 1 To 10 ^ 3 DoEvents '←これを入れる If i Mod 100 = 0 Then Me.TextBox1.Value = Format$(Now, "hh:mm:ss") End If Next i MsgBox "終了" Unload UserForm1 End Sub
お礼
お礼が遅くなりましてすみません。 ご回答ありがとうございました。 いただいたご回答を試してからお礼を書こうと思っていたのですが、忙しくてまだ試せていないのです。 とりあえずとしては問題解決しているのですが、近いうちに必ず利用させていただきます。
お礼
お礼が遅くなりましてすみません。 ご回答ありがとうございました。 いただいたご回答を試してからお礼を書こうと思っていたのですが、忙しくてまだ試せていないのです。 とりあえずとしては問題解決しているのですが、近いうちに必ず利用させていただきます。