- ベストアンサー
VBA進捗状況を可視化(数値)でお願いします
- VBA進捗状況を可視化するための簡単な記述方法を教えてください。
- 1000回以上の作業を繰り返し、その進捗状況を数値で表示する方法を教えてください。
- VBA上級者の方、お願いします。実行の順番も教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No.2、No.3の蛇足です。 Range("D6:D15")を書式など無しにデータだけRange("H6:H15")にコピーしたいのでしたら以下のようにした方が実行速度は早いです。列の挿入も一行にしてます。 Sub 移動() ' ' 移動 Macro Range("H6:H15").Value = Range("D6:D15").Value Columns("G:G").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove End Sub 最後にあった Range("C2").Select は Test() の最後でいいと思います。
その他の回答 (3)
- kkkkkm
- ベストアンサー率66% (1719/2589)
No.2の訂正 最後の '表示を戻します Application.ScreenUpdating = False は '表示を戻します Application.ScreenUpdating = True の間違いです フォームのテキストボックスに表示するとかプログレスバー使うとかもありますが、簡単にという事なのでステータスバーで。
- kkkkkm
- ベストアンサー率66% (1719/2589)
ステータスバーにカウントを出します。 Sub 移動() ' ' 移動 Macro Range("D6:D15").Select Selection.Copy Range("H6").Select ActiveSheet.Paste Columns("G:G").Select Application.CutCopyMode = False Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Range("C2").Select End Sub '同じモジュールにおいて↓こちらを実行してください。 Sub Test() Dim i As Long Dim mCount As Long Dim MaxCount As Long '表示がバタバタするので止めます、 Application.ScreenUpdating = False MaxCount = 1000 For mCount = 1 To MaxCount 移動 '移動を実行します。 DoEvents Application.StatusBar = "移動中 (" & mCount & "/ " & MaxCount & ")" Next '最後にステータスバーを元に戻します。 Application.StatusBar = False '表示を戻します Application.ScreenUpdating = False End Sub
- 名探偵 コナン(@FORSPOKEN)
- ベストアンサー率33% (333/998)
VBAで進捗状況を数値で表示するには、繰り返し処理の中で進捗を表示するためのメッセージボックスやセルへの出力を行うことができます。以下に、簡単な方法を示します。 Sub ProgressVisualization() Dim i As Long Dim totalRepetitions As Long Dim progressCell As Range totalRepetitions = 1000 ' 繰り返し回数 Set progressCell = Range("A1") ' 進捗状況を表示するセルを指定 For i = 1 To totalRepetitions ' 移動処理の呼び出し Call 移動 ' 進捗状況をセルに出力 progressCell.Value = "進捗: " & i & " / " & totalRepetitions DoEvents ' VBAの処理を一時停止し、他の処理を実行する Next i MsgBox "処理が完了しました。", vbInformation, "完了" End Sub Sub 移動() ' 移動 Macro Range("D6:D15").Select Selection.Copy Range("H6").Select ActiveSheet.Paste Columns("G:G").Select Application.CutCopyMode = False Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Range("C2").Select End Sub 上記のコードでは、ProgressVisualizationという新しいサブプロシージャを作成し、その中で移動サブプロシージャを1000回繰り返し実行しています。繰り返し処理の中で、進捗状況をセルA1に数値で出力しています。 また、DoEvents関数を使用することで、VBAの処理を一時停止し、他の処理を実行できるようにしています。これにより、進捗状況がリアルタイムで更新されます。最後に、処理が完了したことをメッセージボックスで通知します。
お礼
FORSPOKEN様 面倒な質問にも関わらず、丁重な記述ありがとうございました。VBA超初心者ですので、又わからないことが出ましたら、よろしくお願いいたします。
お礼
KKKKKm 様 初心者に分かりやすく、何パターンも記述して頂き ありがとうございました。実行出来ました。 いろいろ応用させていただきます。ありがとうございます。