• ベストアンサー

エクセルのマクロで処理中の表示をしたいのですが…

エクセルでマクロを作りました。 起動はメニューからできるようにしました。 処理はsheet1のデータから演算処理した結果をsheet2 に出力します。始め、処理状況を表示(Visible = True)にしていたのですが、罫線などもあるため、処理に1時間ぐらいかかってしまいます。 そこで、処理状況を非表示(Visible = False)にしました。 しかし、仕事をしているという臨場感がないので、「今、処理中です」などの表示をしたいと思いますが、何か良い方法はありますでしょうか? どうぞ、ご教授ください。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

#1です。 Application.DisplayAlerts = False にして、終わったらTrueにします。 Sub Test() Dim dWs As Worksheet, s As Single  On Error GoTo ER:  '実行中シートを作成  Set dWs = Worksheets.Add(before:=ThisWorkbook.Worksheets(1))    dWs.Name = "処理中"    dWs.Range("D8").Value = "実行中です・・・"    dWs.Range("D8").Font.Size = 48    '時間の掛かる処理---ここから      s = Timer      Do While Timer < s + 3        DoEvents      Loop    '時間の掛かる処理---ここまで  'シート削除  Application.DisplayAlerts = False   dWs.Delete ER:  Application.DisplayAlerts = True End Sub

lily02
質問者

お礼

どうもありがとうございました。 お蔭様で、とてもスマートにできました。

その他の回答 (2)

  • driverII
  • ベストアンサー率27% (248/913)
回答No.2

Application.Statusbar = "処理中です(1/10)" などと進捗を表示させるのはけっこう簡単です。

lily02
質問者

お礼

どうもありがとうございました。 試してみました。 ちょっと地味ですね。 ステータスバーに色づけができたらいいのですが、できるでしょうか?

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

単純なものなら「作業中」と大きく書いたシートを非表示にして持たせ、処理が始まったら表示して終わったらまた隠すとか。 独自のプログレスバーのようなものを公開している方もいます。 処理を挟むので遅くなるかも知れませんが、、、 時間のかかる処理中にダイアログを表示するマクロ http://www14.big.or.jp/~kawamura/excelmacro.htm#WAITAPP > 処理に1時間 可能なら↑ここの改善を優先された方が、、、^^;

lily02
質問者

お礼

どうもありがとうございました。 試してみました。 シートに表示するというのは良いアイデアですね。 ただ、処理が終わったときシートは非表示にするというより削除してしまいたいのですが、確認メッセージが出てしまいます。 確認メッセージを出さない方法はあるでしょうか?

関連するQ&A