• 締切済み

ExcelVBA 進行状況ダイアログ

VISTA Excel2007です。 ある作業のVBAを作成して動かしています。 結構時間が掛るので進行状況をダイアログで表示をしたいのですがどうすればいいのかお教えください。

みんなの回答

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.7

> ご回答いただいた内容でいろいろ実行してみましたがうまくいかず暗礁に乗り上げています なにを色々実行したのか不明ですし 基本的にプログレスバーの処理を理解できていないのでしたら プログレスバーの処理だけのコードを作成してまず理解してください。

回答No.6

ループ処理ではないのですね。 どの処理に一番時間が掛かっているかが判らないので、私が提示したStatusBarでやるなら、各処理の前に 「1/10(処理名)実行中・・・」などと地道にコードを挿入することになります。処理の全件数と現在何番目を処理中かを表示します。具体的には、 ・・・ Application.StatusBar="1/10(Ca__左側総合計とNG処理)実行中・・・" Ca__左側総合計とNG処理 Application.StatusBar="2/10(Ca__必要列を右側にコピーして整理)実行中・・・" Ca__必要列を右側にコピーして整理 ・・・ という感じです(数字はいい加減です)。必要なら、時間が掛かっているサブルーチンの中や、セルの色を付けている処理の中にも記述します。 ただ、この方法ではどうしてもあちこちに Application.StatusBar="・・・" というコードを書き散らすことになるのが欠点です。

ymnsun
質問者

お礼

ご丁寧にご説明いただき有難うございました。 もう少し勉強してから取り組んでみます。

回答No.5

すでにひととおり回答が出ているのに、一体何がお望みなのでしょう? もっと具体的に状況を書いていただかないと、有効な回答は付かないと思いますが・・・

ymnsun
質問者

補足

スミマセン 勉強しながらプログラミングしている素人です。 必要な個所を記述します。 ゲームのスコア集計のプログラミングです。 順位を決めるのにいろいろ条件があります。 別にユーザーフォームがあり、コマンドボタンをクリックするとこの標準モジュールへ飛んで集計をします。集計人数が多いと時間がかかるのでプログレスバーで進行状況を目で見れるようにしたいのです。 ご回答いただいた内容でいろいろ実行してみましたがうまくいかず暗礁に乗り上げています。 VBA記述が良く分かっていないので出来ないようです。 ご指導いただければ幸いです。 Sub 競技スコア集計() Sheets("競技").Select Dim R_end2& Range("BQ1048576").End(xlUp).Select R_end2 = Selection.Row If R_end2 >= 7 Then Range(Cells(7, 66), Cells(R_end2, 100)).Select Selection.Clear With Selection.Font .Name = "MS Pゴシック" End With Selection.NumberFormatLocal = "G/標準" Range("BO7").Select End If '--------------------------------------- Ca__左側総合計とNG処理 Ca__必要列を右側にコピーして整理 Cb__総合計と1打での並べ替え Cc__総合計と1打での順位書込_必要 Cd__4条件での並替_必要 Ce__4条件での順位書込_必要 Ch__右側表の整列_必要 Dim Vs1$, Vs2$ ' R_end2 は右側の表の最終行 Dim N1%, N2%, N3%, N4%, Color% Dim Vo$, V2$, V3$, V1$, V4$, V5$ Range("BO1048576").End(xlUp).Select R_end2 = Selection.Row Range("BO7").Select Color = 34 For N1 = 7 To R_end2 - 1 Vs1 = Cells(N1, 66).Value Vs2 = Cells(N1 + 1, 66).Value If Vs1 = Vs2 Then Range(Cells(N1, 97), Cells(N1 + 1, 97)).Select 'Range("AY N1:AY N1+1")のこと With Selection.Interior .ColorIndex = Color .Pattern = xlSolid End With '-------------------------- ElseIf Vs1 <> Vs2 And Color = 34 Then Color = 24 ElseIf Vs1 <> Vs2 And Color = 24 Then Color = 34 End If Next Range(Cells(7, 66), Cells(R_end2, 100)).Select With Selection.Font .Name = "MS Pゴシック" End With Selection.NumberFormatLocal = "G/標準" End Sub

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.4

> 進行しているのか否かを目で確かめられるようにしたいのです。 それがプログレスバーなんですが…基本的だと思いますが… プログレスバーで駄目だとなるとどのようなものをお望みでしょうか?

ymnsun
質問者

補足

スミマセン 勉強しながらプログラミングしている素人です。 必要な個所を記述します。 ゲームのスコア集計のプログラミングです。 順位を決めるのにいろいろ条件があります。 別にユーザーフォームがあり、コマンドボタンをクリックするとこの標準モジュールへ飛んで集計をします。集計人数が多いと時間がかかるのでプログレスバーで進行状況を目で見れるようにしたいのです。 ご回答いただいた内容でいろいろ実行してみましたがうまくいかず暗礁に乗り上げています。 VBA記述が良く分かっていないので出来ないようです。 ご指導いただければ幸いです。 Sub 競技スコア集計() Sheets("競技").Select Dim R_end2& Range("BQ1048576").End(xlUp).Select R_end2 = Selection.Row If R_end2 >= 7 Then Range(Cells(7, 66), Cells(R_end2, 100)).Select Selection.Clear With Selection.Font .Name = "MS Pゴシック" End With Selection.NumberFormatLocal = "G/標準" Range("BO7").Select End If '--------------------------------------- Ca__左側総合計とNG処理 Ca__必要列を右側にコピーして整理 Cb__総合計と1打での並べ替え Cc__総合計と1打での順位書込_必要 Cd__4条件での並替_必要 Ce__4条件での順位書込_必要 Ch__右側表の整列_必要 Dim Vs1$, Vs2$ ' R_end2 は右側の表の最終行 Dim N1%, N2%, N3%, N4%, Color% Dim Vo$, V2$, V3$, V1$, V4$, V5$ Range("BO1048576").End(xlUp).Select R_end2 = Selection.Row Range("BO7").Select Color = 34 For N1 = 7 To R_end2 - 1 Vs1 = Cells(N1, 66).Value Vs2 = Cells(N1 + 1, 66).Value If Vs1 = Vs2 Then Range(Cells(N1, 97), Cells(N1 + 1, 97)).Select 'Range("AY N1:AY N1+1")のこと With Selection.Interior .ColorIndex = Color .Pattern = xlSolid End With '-------------------------- ElseIf Vs1 <> Vs2 And Color = 34 Then Color = 24 ElseIf Vs1 <> Vs2 And Color = 24 Then Color = 34 End If Next Range(Cells(7, 66), Cells(R_end2, 100)).Select With Selection.Font .Name = "MS Pゴシック" End With Selection.NumberFormatLocal = "G/標準" End Sub

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.3

プログレスバーコントロールで進捗状況を表示するには? http://www.asahi-net.or.jp/~ZN3Y-NGI/YNxv9g1810.html 参考にしてください。

ymnsun
質問者

補足

質問内容の不備ですみません。 作業内容は結構複雑で、集計ソフトのようなものです。 集計、並び替え、条件分岐等多岐にわたっていてユーザーフォームを作成して、コマンドボタンで一連の作業を行います。 標準モジュールも数個に分けて記述していて、一度の命令で複数の標準モジュールを渡って動かしています。条件が複雑で結構何分と時間がかかる場合が多く、その為進行状況を何らかの形でユーザーに知らせ、進行しているのか否かを目で確かめられるようにしたいのです。 説明不足でご迷惑をおかけしますがなにとぞよろしくお願いします。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

こんなのがヒットしました。 [XL] ユーザー フォームでプログレス バーを表示する方法 http://support.microsoft.com/kb/211736/ja

ymnsun
質問者

補足

質問内容の不備ですみません。 作業内容は結構複雑で、集計ソフトのようなものです。 集計、並び替え、条件分岐等多岐にわたっていてユーザーフォームを作成して、コマンドボタンで一連の作業を行います。 標準モジュールも数個に分けて記述していて、一度の命令で複数の標準モジュールを渡って動かしています。条件が複雑で結構何分と時間がかかる場合が多く、その為進行状況を何らかの形でユーザーに知らせ、進行しているのか否かを目で確かめられるようにしたいのです。 説明不足でご迷惑をおかけしますがなにとぞよろしくお願いします。

回答No.1

ダイアログでなくステータスバーの例です。 http://officetanaka.net/excel/vba/tips/tips13.htm 数万件以上の処理の場合、表示だけでも時間が掛かるので100件とか1000件単位で表示させた方がいいでしょう。

ymnsun
質問者

補足

質問内容の不備ですみません。 作業内容は結構複雑で、集計ソフトのようなものです。 集計、並び替え、条件分岐等多岐にわたっていてユーザーフォームを作成して、コマンドボタンで一連の作業を行います。 標準モジュールも数個に分けて記述していて、一度の命令で複数の標準モジュールを渡って動かしています。条件が複雑で結構何分と時間がかかる場合が多く、その為進行状況を何らかの形でユーザーに知らせ、進行しているのか否かを目で確かめられるようにしたいのです。 説明不足でご迷惑をおかけしますがなにとぞよろしくお願いします。

関連するQ&A

  • vc++2008の進行状況ダイアログ表示に関して

    現在VC++2008にて開発を行っております、C++初心者の者です。 モーダルダイアログを表示し、 そのダイアログの値を利用・表示した進行状況ダイアログを表示したいと考えています。 ・進行状況ダイアログに表示する値  現在作成ファイル数 / 総制作ファイル数  (プログレスバーの表示は考えていません。) ・現在、進行状況ダイアログはモーダレスダイアログを表示し、表示している値をforループ内で変更するような処理にしていますが、ダイアログには何も表示していません。 どのような処理にすればよろしいでしょうか。 宜しくお願いします。

  • vegas 18 進行状況ダイアログに関して

    VEGAS Pro 18.0 OS:windows11 レンダリング時に表示される進行状況ダイアログが表示されなくなりました。 つい先ほどまで表示されていましたが、なんの拍子にか突然表示されなくなり、その後パソコンの再起動、キャッシュの消去、ProgramDataにあるvegas関連のファイルの削除と本体の再インストールなどは試しましたが、解決には至りませんでした。 補足:進行状況ダイアログが表示されていなくてもレンダリング自体は正常に行われているようで、タイムライン左下の進行状況バーとプレビュー画面は進行状況に応じて動いていること、また仕上がった動画も再生可能で編集通りの仕上がりになっていることは確認済み 直前にソフトのフリーズへの対処としてタスクマネージャーからタスクの終了をしたりしましたが、それ自体は普段も頻繁にしているようなことで、これまでこのような状態になったことはありません。 誤操作で進行状況ダイアログが非表示化されてしまっているのかとも思いましたが、設定を見てみたりヘルプで検索してみたりしてもレンダリング開始時からの進行状況ダイアログの表示/非表示の項目は見つけられませんでした。 助言いただけると助かります。 ※OKWAVEより補足:「ソースネクスト株式会社の製品・サービス」についての質問です。

  • Accessフォームに進行状況ダイアログを表示したい

    Access2000を使用しています。 DAOでデータ引き当て処理を行なっている最中、進行状況ダイアログ を表示すれば時間の目安が付きやすいと思うのですが、やり方が分か りません。Accessでフォームに表示するのは難しいのでしょうか? ご存知の方、方法もふくめて宜しくお願いいたします。

  • 進行状況表示のウィンドウ

    進行状況表示のウィンドウ ソフトの中である程度時間のかかる処理をしている間、ソフトが固まったように見えるのを防ぐために、進行状況を表示する小さなダイアログボックスを作ろうと思いました。 そして、新しいウィンドウを作る方法は、ダイアログのリソースを作っておいてDialogBox()関数でそれを呼び出すか、ウィンドウクラスを登録してCreateWindow()関数でウィンドウを作る方法と二通りあると思いますが、どちらが向いていますか?? 作るウィンドウには進行状況の%表示とキャンセルボタンを作るだけのモーダルなもので、「時間のかかる処理」は_beginthreadex()関数で別スレッドを立てて行う予定です。 環境は、Visual C++ 2008 のWin32アプリです。

  • デフラグ中の進行状況表示

    Vistaでデフラグを実行中に進行状況が表示されません。多分、Vistaではデフォルト設定されていないからだと思いますが、敢て、進行状況を表示させる方法があれば教えて下さい。 宜しくお願い致します。

  • ドロップシャドウの進行状況ダイアログ

    【使用環境】 Illustrator CS3 ,Mac OSX  海外のチュートリアルサイトを見て勉強をしています。 グラデーションを掛けたオブジェクトに効果-スタイライズ-ドロップシャドウを適用した後、グラデーションの色を変える・移動して元の位置に戻す・拡大するたびに、ぼかしの進行状況ダイアログが表示されます。 これはillustratorの仕様なのでしょうか?マシンパワー、設定等の問題でしょうか?チュートリアルの動画画面では表示されることなく、サクサク作業ができています。 フィルタのドロップシャドウと効果のドロップシャドウの違いを考えると、毎回ぼかしを再計算するのも分かるのですが、作業が進まず困ってます。最後に掛ければ…とも思いましたが、もし回避する方法があるのであれば、教えて頂けますでしょうか?よろしくお願い致します。

  • EXCELVBAでフォルダを指定するダイアログ

    EXCELVBAでフォルダを指定する(ファイルではなく)ダイアログを表示させたいの ですが、VBで存在するコントロールがVBAにないので、どのようにすればいいのか わかりません。どなたか、具体的に教えていただけませんでしょうか? EXCEL97を使っています。

  • ExcelVBAのコードが知りたい

    ちょっと古いことを教えてほしいのですが。 というのは、新しく知り合いになった方から、古いプログラム(Excel-VBA)を直したい、という相談を受けました。 ところが、ものすご~く古いものらしくて 1)VBAProjectを開いてみると、シートオブジェクトと標準モジュールはあるのですが、フォームが表示されません。     でも、実際の動きをみると、入力用のフォームなどは表示されます。 2)良く見ると(Sheet表示を全部見ると)、シートオブジェクトに表示されないものがあって、そこにX1DG,X2DG・・・という名前のダイアログシートがあって、そのシート上にフォームがありました。 3)Macroを動かすいわゆるボタンはなくて、リボンの中のアドインを選ぶと、”ユーザー設定のツールバー”が表示され、その中にプルダウンメニューが設定されていて、これを操作すると、それぞれの機能が動きます。 3)動作するVBAのコードは標準Module上に書かれていますが、上記のダイアログの中の定義体や、ユーザー設定のツールバーの中のコードがどこを探しても出てきません。 4)VBAの教科書などを見ると、どうもEXCEL95/Excel4.0の時代のもののように見受けられます。 5)今使用している(知り合いの方も、私も)ものは、WinVISTA・Excel2007なのです。 どうしたら、全体構成(VBA・DG)を見ることができるでしょうか? 教えていただけると、むちゃくちゃ嬉しいのですが。 宜しくお願いします。

  • ダイアログを非表示にしたい

    VBAのAccessを使っているのですが、クエリを作成してパラメータに変数を入れると、実行したときに「パラメータの入力」というダイアログが出てきてしまいます。 パラメータはソースの中で指定して、このダイアログを非表示(出て来ない)にするためにはどうしたらいいいのでしょうか。

  • WebBrowserの進行状況

    vb2005で、ProgressBarにWebBrowserの進行状況を表示するにはどうすればよいのですか? よろしくお願いいたします。

専門家に質問してみよう