委任を使用して、これを機能させることができます。プログレス バーは、機能 1、2、および 3 の実行とは別のフォームになっているため、プログレス バー フォーム内で実行してみてください。form.Show を呼び出した後、フォームにフォーカスがあり、関数 1、2、および 3 はフォームが閉じるまで実行されません。
プログレス バー フォーム (ラベルとプログレス バー コントロールがあると仮定) に、プログレス バーを更新する関数を配置します。
Public Sub UpdateProgress(intProgress As Integer, Optional strMessage As String)
If Not IsMissing(strMessage) Then
lbl_Progress.Caption = strMessage
End If
pb_Progress.Value = intProgress
Call Me.Repaint
End Sub
次に、プログレスバー フォーム内から関数を実行できます。これを行うには、それを呼び出したフォームをオブジェクトとして設定して関数を公開するか、関数 1、2、および 3 をプログレス バー フォームに保存します。
Sub RunFunctions()
UpdateProgress 0, "Starting functions"
UpdateProgress 10, "Begin function1"
Call function1
UpdateProgress 30, "Finished function1"
UpdateProgress 50, "Begin function2"
Call function2
UpdateProgress 70, "Finished function2"
UpdateProgress 90, "Begin function3"
Call function3
UpdateProgress 100, "Finished function3"
UpdateProgress 100, "Finished All Functions"
End Sub
これを設定するのに助けが必要な場合は、私に質問してください。