ProgressBarにCancel

  ◎UserFormにキャンセルボタン付きでプログレスバーを表示する例を二つ紹介します!!
  例1は、UserFormの上に重ねてプログレスバーを表示する例です。
  UserFormを表示して、処理実行ボタンをクリックするとプログレスバーを表示させます。
  プログレスバー表示中にキャンセルボタンをクリックして処理を中止さすこともできます。

  【例1】

備忘録サイトの画面

  Module1のソースコードを示します。(コードはコピー&ペーストできます!)

備忘録サイトの画面
Option Explicit
Public i As Integer                         '処理する総件数
Public MyFlag As Boolean                    '中止ボタンが押されたか判断
Sub プログレスバー例1()
    Worksheets("ProgressBar").Activate
    UserForm1.Show False                    'ユーザーフォームを表示する
End Sub

  UserForm1のソースコードを示します。(コードはコピー&ペーストできます!)

備忘録サイトの画面
Private Sub CommandButton1_Click()
    UserForm2.Show
End Sub

Private Sub CommandButton2_Click()
    Unload Me
End Sub

Private Sub UserForm_Initialize()
    MyFlag = False
End Sub

  UserForm2のソースコードを示します。(コードはコピー&ペーストできます!)

備忘録サイトの画面
Private Sub CommandButton1_Click()
    MyFlag = True
End Sub

Private Sub UserForm_Activate()
    Worksheets("ProgressBar").Activate
    For i = 1 To 30000
        ProgressBar1.Value = (i / 30000) * 100
        DoEvents
'       ここに処理を記述する
        If MyFlag = True Then           'キャンセルボタンが押された状態
            DoEvents
            MsgBox "キャンセルがクリックされたので、処理を中止します"
            Exit For
        End If
    Next i
    MyFlag = False
    Unload UserForm2
End Sub

  例2は、ユーザーフォームの中にプログレスバーを表示する例です。
  ユーザーフォームを表示して、処理実行ボタンをクリックするとプログレスバーとキャンセルボタンが有効になります。
  例1と同様にプログレスバー表示中にキャンセルボタンをクリックして処理を中止することができます。
  【例2】

備忘録サイトの画面

  Module2のソースコードを示します。(コードはコピー&ペーストできます!)

備忘録サイトの画面
Sub プログレスバー例2()
    Worksheets("ProgressBar").Activate
    MyFlag = True
    Do While MyFlag = True
        UserForm3.Show (vbModal)            'ユーザーフォームを表示する
    Loop
End Sub

  UserForm3のソースコードを示します。(コードはコピー&ペーストできます!)

備忘録サイトの画面
Private Sub CommandButton1_Click()
    Worksheets("ProgressBar").Activate
    CommandButton1.Enabled = False
    CommandButton2.Enabled = False
    CommandButton3.Enabled = True
    MyFlag = False
    ProgressBar1.Visible = True
    ProgressBar1.BorderStyle = 1 - ccFixedSingle
    For i = 1 To 30000
        ProgressBar1.Value = (i / 30000) * 100   'プログレスバーの値を設定する
        DoEvents
'       ここに処理を記述する
        If MyFlag = True Then                    'キャンセルボタンが押された状態
            MsgBox "キャンセルがクリックされたので、処理を中止します"
            Exit For
        End If
    Next i
    CommandButton1.Enabled = True
    CommandButton2.Enabled = True
    CommandButton3.Enabled = False
    MyFlag = True
    Unload Me
End Sub

Private Sub CommandButton2_Click()
    MyFlag = False
    Unload Me
End Sub

Private Sub CommandButton3_Click()
    MyFlag = True
End Sub

Private Sub UserForm_Initialize()
    CommandButton3.Enabled = False
End Sub

   ★ここから⇒Sample[ProgressCancel.zip]ファイルのダウンロードができます。

↑頁トップへ