[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ForやDoでループを行う時、後どのぐらいで終わるかなどを表示させたい時に、表す方法(簡易プログレス)
Dim blnSaveStatus As Boolean
Dim strBarNow As String
Dim strBarWk As String
Dim intSincyoku As Integer
Dim intCNT As Integer
Dim i As Integer
blnSaveStatus = Application.DisplayStatusBar
Application.DisplayStatusBar = True
strBarNow = "現在 0%:□□□□□□□□□□"
Application.StatusBar = strBarNow ・・・①
For i = 1 To ループ回数
~~ 以下ループ内の処理 ~~
:
:
intSincyoku = Int(i * 100 / ループ回数) ・・・②
intCNT = Int(i * 10 / ループ回数) ・・・③
strBarWk = "現在 " & intSincyoku & "%:" & _
String(intCNT,"■") & String(10 - intCNT,"□")
If (strBarWk <> strBarNow) Then
Application.StatusBar = strBarWk ・・・④
strBarNow = strBarwk
End If
Next i
Application.StatusBar = False ・・・⑤
Application.DisplayStatusBar = blnSaveStatus
■解説
①ステータスバー(EXCEL画面の左下)に表示させる。
Application.StatusBar = 表示したい文字列
例では、一度変数にいれてから表示している。
②進捗率をもとめる
現在のカウントに100をかけ、全体の回数で割る
③マス単位にする
10個マスだから10%単位で表す
④ステータスバーに表示
ステータスバーに③の数ぶん■を表示し、10から③の数ぶん引いた数、□を表示する
※IF文(If (strBarWk <> strBarNow) Then ・・・) にしているのは、
変化がある時だけ、表示させるようにしている。
⑤ステータスバーの盛業をEXCELに戻す
必ず行う。