[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロで処理中に処理経過状況を表示させる方法。』(ポポロン)
お世話になっております。
名簿データを別シートにループで転記処理をしており
転記処理時間は、10秒程で完了しますが
経過状況を表示させたいと思います。
処理数は30名分で・・・
ループ毎に処理経過をメッセージボックスか、UserForm上のラベル?か何かに表示できないかと考えております。
処理実行
↓
○○様・・・転記終了
○○様・・・転記終了
○○様・・・転記終了
○○様・・・転記終了
・
・
・
処理完了
ネットでは、プログレスバーなどは検索できましたが、上記処理については参考になるものを見つけることができませんでした。
皆さまどうかアドバイスの程よろしくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
Sub test() Application.StatusBar = Now End Sub
(???) 2016/06/02(木) 09:55
Application.StatusBar = "処理をしています... " & i
ヒントを手がかりに、上記のように、ループ回数を処理中であることが分かるようにしてみました。
できれば、登録者毎の進捗が表示できればと思います。
(ポポロン) 2016/06/02(木) 10:20
>>名簿データを別シートにループで転記処理をしており >>転記処理時間は、10秒程で完了しますが >>経過状況を表示させたいと思います。
重い処理なんでしょうね。
でも・・・もしかして・・・その処理が 1秒で終われば、ステータス表示が、ほとんど意味のないものになりますね。
現在のコードに手を入れれば 10秒が、ずっと縮まるかもしれませんね。 そういった方向での対処は考えておられますか?
(β) 2016/06/02(木) 10:27
何時もありがとうございます。
こちらで、教わりながらコードを作成することができました。
配列等を駆使すれば高速化できると思いますが、現状コードが、私の頭脳と丁度バランスが取れているので、そのへんは妥協しました((T_T))
処理はPC能力によりますが、会社のパソコンで、処理時間は概ね10秒程度です。
表示の目的は
精神衛生的なもので、処理がきちんとされているか目視で名簿の進捗が可視化できればという欲の部分で質問をさせていただきました。
(ポポロン) 2016/06/02(木) 10:41
Application.ScreenUpdating = False Application.Calculation = xlCalculationManual
処理後に以下、とするだけでも、結構速くなったりするので、お試しを。
Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True
これで1秒で終わるようになるなら、進捗表示は不要にできますよね。
既に対策しており、変わらないようならば、まぁステータスバーでも。
(???) 2016/06/02(木) 11:10
アドバイスありがとうございます。
すでに導入しておりましたこと、伝え忘れておりました。すみません^_^
(ポポロン) 2016/06/02(木) 11:23
処理した登録者名を格納し
(ループ&格納処理)
Dim x2 As Range 'MsgBox用:処理address取得
Dim x3 As String 'MsgBox用:アドレ値格納
Dim msg As String 'MsgBox用:値
For Each x2 In sh1.Range(Cells(i, 2), Cells(i, 2))
x3 = x2.Value
(書き出し表示)メッセージボックスに、一気に書き出す処理を作成しました。
msg = msg & x3 & vbCrLf
ただ、処理終了後の結果を表示するだけで、経過が見られません。
やはりステータスバーにCountと登録者名を表示する方向で作成してみます。
(ポポロン) 2016/06/02(木) 13:00
表示更新する分、それだけ完了までが遅くなってしまうので、止めた方が良い訳ですね。
これに対し、ステータスバーはExcel配下なので、マクロ実行より上位であり、表示できるというわけです。
(???) 2016/06/02(木) 13:21
アドバイスありがとうございました。
ステータスバーに、今誰が処理中なのかを表示できるようにしました。
また、トータルの処理結果は、メッセージボックスに表示で対応しました。
(ポポロン) 2016/06/02(木) 17:32
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.