• ベストアンサー

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

エクセルでマクロを作りました。 起動はメニューからできるようにしました。 処理は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

  • エクセルのマクロを有効にしないと表示しないようにする方法

    エクセルでマクロを有効にしないと、シートが表示されないように設定したいのですが、下記の様に(ほかの方の投稿から)入力すると三行目がエラーになります。素人なので、よくわかりません。どのようにしたら、マクロを有効にしないと全てのシートを表示しないようにできるのでしょうか? ご教授いただけますでしょうか Private Sub Workbook_BeforeClose(Cancel As Boolean) Sheets(\"Sheet1\").Visible = False Sheets(\"Sheet2\").Visible = False ActiveWorkbook.Protect Password:=\"error123\" End Sub Private Sub Workbook_Open() ActiveWorkbook.Unprotect Password:=\"error123\" Sheets(\"Sheet1\").Visible = True Sheets(\"Sheet2\").Visible = True Sheets(\"Sheet1\").Select End Sub

  • EXCELマクロの処理速度

    いつもお世話になっております。 EXCELのマクロで、シートAのデータから条件に合致する値を検索してシートBにデータを自動で入力させています。 シートA、Bは同じブック内のシートです。 シートAはVisible = FALSEで隠したままで、シートBを隠した状態と表示した状態でマクロの処理速度に違いがある(具体的な時間は計測していませんが体感できるほどの差がある)のですがこのような処理速度の違いは起こるものなのでしょうか。 私が作成したマクロではシートBが表示されている方が処理速度が速いです。 もし、シートBを表示した方が速くなることが理論的に説明できるのなら、表示させて処理速度を少しでも速くしたいと思っています。 よろしくお願いします。

  • マクロ実行時、非表示シートを表示させたくない

    ファイル[testBOOK]の中に(sheet1)(sheet2)があり (sheet2)は非表示,ブック保護されています。 (sheet1)にあるマクロAAボタンで ・[図A]を非表示 ・[図B]を表示 ・マクロBBを実行 するようになっています。 --------------------------------------- Sub AA() '≪非表示≫ ActiveSheet.Shapes("図A").Visible = False '≪表示≫ ActiveSheet.Shapes("図B").Visible = True 'ブック保護解除 ActiveWorkbook.Unprotect 'マクロBB実行 Sheets("sheet2").Visible = True Sheets("sheet2").Select Application.Run "testBook.xlsm!BB" ActiveWindow.SelectedSheets.Visible = False 'ブック保護 ActiveWorkbook.Protect End Sub ---------------------------------------- マクロBBとは[sheet2]の中にある ・[図A]を非表示 ・[図B]を表示 です。 上記のマクロを実行させると(sheet2)が瞬間的に表示されてしまうのですが、 これを表示させないようにすることはできないでしょうか?

  • 非表示になったエクセルは?

    VBAマクロでパソコン画面からエクセルを非表示にする場合、 Sub TEST1() Application.visible = False End Sub で画面からエクセルが消えると思いますが、消えたエクセルはどうなってしまうのでしょうか? 何もしなければいつまでもそのままなのでしょうか? 電源を切ればでてくるのでしょうか? Application.visible = Trueで表示されるのはわかりますが、消えたエクセルにどうやってそのマクロを作動させたら良いのでしょうか? 10秒後に自動的に再表示させる方法はマクロに最初から Application.OnTime Now + TimeValue("00:00:10) などで自動実行させればよいのでしょうが、そうでない場合の再表示方法を教えてください。

  • エクセルのVBAマクロで隠れシートを表示させる方法について教えて下さい

    エクセルのVBAマクロで隠れシートを表示させる方法について教えて下さい。 エクセルで”書式→シート→表示しない”を実行するとエクセルのシートを非表示にすることが出来ます。 逆に”書式→シート→表示する”にすると隠れているシートが表示出来ます。 この非表示のシートを表示させるVBAマクロの記載を教えて下さい。 但し、”Sheets(シート名).Visible = True”の様にシート名を記載すれば非表示のシートが表示されるのは知っています。今回知りたいのは、シート名の分からない全ての非表示のシートを表示させるVBAマクロの記載方法を教えて下さい。

  • エクセル起動時に、オートオープンマクロでもう一つのエクセル(以下『マス

    エクセル起動時に、オートオープンマクロでもう一つのエクセル(以下『マスタ情報』と表示)が 連動して起動するように設定をしているのですが、この『マスタ情報』のエクセルが起動している 事実をユーザーに秘密にしておく設定は可能でしょうか?(保存先を知らせたくないためです)  ActiveWindow.Visible = False 『マスタ情報』のエクセルをアクティブにして上記のマクロ構文を付け加えれば確かにウィンドウが 非表示にはなるのですが、ユーザーにツール『ウィンドウ』の『再表示』メニューをクリックされて しまうと、せっかく非表示にした『マスタ情報』のエクセルが再表示されてしまいます。  Sheets(1).Visible = xlVeryhidden ユーザーに再表示させたくない対象のオブジェクトがシートの場合であれば、上記のマクロ構文で 解決できるのですが・・・  ActiveWindow.Visible = xlVeryhidden 上記マクロ構文を試してみたところ、エラーは発生しなかったのですが『マスタ情報』のエクセルは 非表示に設定されることなくマクロの処理が終了してしまいました。ブック(ウィンドウ)を完全に 非表示にする方法をご存知の方、是非教えて頂けますよう宜しくお願いします。

  • Excelのマクロで同じ処理を実行

    Excelのマクロについてです。 この度、フォルダ内にあるデータから傾きを抽出して、 データシートにまとめる作業を求められています。 一度ずつ開いて行うのが大変なので、マクロを用いようと思っています。 Sub マクロループ() Dim myPath As String Dim myFile As String myPath = "C:\test\" myFile = Dir(myPath & "*.CSV*") Do Until myFile = "" Workbooks.Open myPath & myFile ( ActiveWindow.ScrollRow = 2 ActiveWindow.ScrollRow = 3 ~ ~ ActiveSheet.Shapes("グラフ 1").IncrementLeft -125.25 ActiveSheet.Shapes("グラフ 1").IncrementTop 21.75 Application.CommandBars("Format Object").Visible = False ) ActiveWorkbook.Close True myFile = Dir() Loop End Sub ~の部分に省略した処理が入ります。 これでエラーなどは起きないのですが、開いて閉じるだけになってしまっています。 ()で括られた部分だけで実行すると、そのファイルで傾きを表示してくれます。 これを全ファイルでやりたいのですが、お力添えをお願いします。 また、それぞれで得られた傾きをデータシートに自動で入力することなどができればそれも教えていただければ幸いです。 どうかよろしくお願いします。

  • エクセル:マクロ処理

    エクセルファイルにマクロを入れておき、あるボタンを押したらそのマクロが1回だけ実行される。 というようにしたい。 (質問)   ボタンは、どう作るか。コマンドで作るのか。   ボタン処理のところのマクロ記述はどんな感じのコードか。   このファイルを開いたときマクロを有効とするかは有効にするでいいんですよね。 (参考) ワークシート   ボタン1を表示しておく   マクロ   ボタン処理   実行処理 マクロend

  • ExcelのVisibleについて

    VB6.0でデータベースから取得したデータをExcelに 出力するプログラムを作っています。 ExcelのVisibleをFalseに設定して出力処理を行って いるのですが、処理中に他のExcelを起動させると Visible=Falseの設定が解除されて処理中の動作が 見えてしまいます。 Excelのアプリケーションに対してVisible=Falseに 設定しているのが原因ではと思って、ブックに対して 下記のように設定しても駄目でした。 WorkBooks("XXX.xls").Windows(1).Visible = False 出力するテーブルのフィールドが多いため、10分近く処理に時間がかかります。 その間に他のExcelを立ち上げても、処理中のExcelのVisible=Falseの設定が解除されないようにする方法はないでしょうか?

  • エクセルで質問です。

    エクセルで質問です。 現在マクロを使って簡単な計算表を作っているのですが、エクセルを終了する時にフォームコントロールボタンを使って終了というカタチにしています。(下記参照) Sub 終了処理() Application.DisplayFullScreen = False With ActiveWindow .DisplayHorizontalScrollBar = True .DisplayVerticalScrollBar = True .DisplayWorkbookTabs = True .DisplayGridlines = True .DisplayHeadings = True End With Toolbars(1).Visible = True Toolbars(2).Visible = True Toolbars(5).Visible = True Toolbars(7).Visible = True Toolbars(9).Visible = True Application.DisplayFormulaBar = True Application.DisplayStatusBar = True Application.DisplayAlerts = False Application.Quit End Sub ここまではうまく出来たのですが、終わるときに右上にある×ボタンを使って終わる事が出来ないようにしたい!っていうのが今回の質問です。 皆様のお力をお借りしたいと思いますので宜しくお願い致します。 ちなみに、エクセルを開いた時はフルスクリーンになるようにしています。 trueのところがfalseにしています。