【プログレスバー表示】


簡易版

Public Function UpdateProgressBar( _
    ByVal lPercent As Long _
)
    Dim lBlackBlkNum As Long
    Dim lWhiteBlkNum As Long
    Debug.Assert 0 <= lPercent And lPercent <= 100
    lBlackBlkNum = Int(lPercent / 10)
    lWhiteBlkNum = 10 - lBlackBlkNum
    Application.StatusBar = "処理中... " & String(lBlackBlkNum, "■") & String(lWhiteBlkNum, "□") & " " & lPercent & "%"
End Function
 
Public Function ClearProgressBar()
    Application.StatusBar = False
End Function
 

ラベルコントロール版


プログレスバーコントロール版

  • プログレスバーのユーザーフォームを追加
  • VBE ツール⇒その他のコントロール にて Microsoft ProgressBar Control を追加
    • 2014/05/20 追記:環境により動作しない場合があるため、本コードは使用しない!

Public IsProgCancel As Boolean
 
Private Sub CommandButton1_Click()
    IsProgCancel = True
End Sub
 

Sub test()
    Dim lTime As Long
    Dim iWaitTime As Long
 
    lWaitTime = 20000
 
    Call GenProgBar
 
    Call UpdateProgBar(10)
    For lTime = 0 To lWaitTime
        Call DoEventsProgBar
    Next lTime
    Call UpdateProgBar(50)
    For lTime = 0 To lWaitTime
        Call DoEventsProgBar
    Next lTime
    Call UpdateProgBar(100)
    For lTime = 0 To lWaitTime
        Call DoEventsProgBar
    Next lTime
 
    Call CloseProgBar
End Sub
 
'プログレスバーを生成
Public Function GenProgBar()
    ProgressBar.ProgressBar1.Min = 1
    ProgressBar.ProgressBar1.Max = 100
    ProgressBar.ProgressBar1.Value = 1
    ProgressBar.Show vbModeless
End Function
 
'プログレスバーの進捗を更新
Public Function UpdateProgBar( _
     ByVal sProgBarVal As String _
)
    ProgressBar.ProgressBar1.Value = sProgBarVal
End Function
 
'プログレスバーを閉じる
Public Function CloseProgBar()
    Unload ProgressBar
End Function
 
'キャンセルイベント受付
Public Function DoEventsProgBar()
    DoEvents
    If ProgressBar.IsProgCancel = True Then
        Unload ProgressBar
        MsgBox "キャンセルされました"
        End
    End If
End Function
 

最終更新:2016年10月28日 21:55