| |フォーム | |バー表示 | |進行中回数計算 | |プログレス表示 | |ダイアログを閉じる | |終了メッセージ| |
| |テストマクロ | |ループ処理| |

| フォーム | ▲ TOP |





| プログレスバー表示 | ▲ TOP |
Option Explicit
Public mypbProgCnt As Integer 'Progress カウンター変数
Public mypbSCount As Integer '処理回数
Dim myJobCnt As Integer '現在進行中の回数
Dim myBarSize As Integer 'プログレスバーサイズ
Public Sub ProgShowStart(myTitle As String)
''プログレスバー表示 2001/7/5
Dim myMsg1 As String
' myMsg1 = CStr(mypbProgCnt - 1) & "/" & CStr(mypbSCount)
myMsg1 = myTitle & " 処理中"
' myMsg1 = myTitle & mypbProgCnt & "/" & mypbSCount
''ダイアログへ表示
With FProgress
.StartUpPosition = 0
.Caption = myTitle
.Top = 130
.LEFT = 240
.Height = 70
.Width = 144
''プログレスバーの枠の部分
'' .Label1.BorderStyle = fmBorderStyleSingle '枠あり
.Label1.SpecialEffect = fmSpecialEffectSunken '
.Label1.Height = 15
.Label1.LEFT = 12
.Label1.Width = 115
.Label1.Top = 30
''プログレスバーのバーの部分
.Label2.BackColor = RGB(255, 255, 0)
.Label2.BorderStyle = fmBorderStyleSingle '枠あり
.Label2.Height = 13
.Label2.LEFT = 13
.Label2.Width = 0
.Label2.Top = 31
''進捗状況表示の部分 ( % )
.Label3.TextAlign = fmTextAlignCenter
.Label3.BackStyle = 0
.Label3.Height = 14
.Label3.LEFT = 12
.Label3.Width = 113
' .Label3.Top = 31
.Label3.Top = 32
.Label3.Font.Size = 10
.Label3.Font.Bold = True 'false 標準 true 太字
''メッセージ表示の部分
' .Label4.TextAlign = fmTextAlignCenter
.Label4.Caption = myMsg1
' .Label4.SpecialEffect = fmSpecialEffectEtched '枠が沈む
' .Label4.SpecialEffect = fmSpecialEffectRaised '浮き上がる
' .Label4.SpecialEffect = fmSpecialEffectBump '
.Label4.Height = 14
.Label4.LEFT = 12
.Label4.Width = 120
.Label4.Top = 9
.Label4.Font.Size = 9
.Label4.Font.Bold = True 'false 標準 true 太字
myBarSize = .Label3.Width
End With
FProgress.Show vbModeless
End Sub
| 進行中回数計算 | ▲ TOP |
Public Sub ProgShowCount(myTitle As String)
''進行中回数計算
Dim myMsg1 As String
Dim myMsg2 As String
myMsg1 = "処理中 " & mypbProgCnt & " / " & mypbSCount
myJobCnt = mypbProgCnt / mypbSCount * 100
myMsg2 = Int(myJobCnt) & " %"
With FProgress
.Label2.Width = myBarSize * myJobCnt / 100
.Label3.Caption = myMsg2
.Label4.Caption = myMsg1
End With
End Sub
| プログレス表示 | ▲ TOP |
Public Sub ProgShowEvent()
''プログレス表示
DoEvents
End Sub
| ダイアログを閉じる | ▲ TOP |
Public Sub ProgShowClose()
''ダイアログを閉じる
Unload FProgress
End Sub
| 終了メッセージ | ▲ TOP |
Public Sub ProgShowEnd(myTitle As String)
''終了メッセージ
Dim myMsg1 As String
' myMsg1 = "終了しました。"
' myMsg1 = myTitle & " " & mypbProgCnt - 1 & "/" & mypbSCount
' myMsg1 = myTitle & " 終了"
myMsg1 = myTitle & " " & mypbSCount & " 件"
Beep
With FProgress
.Label4.Caption = myMsg1
End With
End Sub
| テストマクロ | ▲ TOP |
Option Explicit
Sub progtest()
Dim mycMsg1 As String
mycMsg1 = "Progress Test" 'Progress Bar タイトル
mypbSCount = 20 '処理回数
LoopCom01 mycMsg1
End Sub
| ループ処理 | ▲ TOP |
Sub LoopCom01(mycMsg1 As String)
''ループ処理 1 2002/8/29
Dim mycTitle As String
mycTitle = mycMsg1
Application.Calculation = xlManual '再計算手動
Application.ScreenUpdating = False '画面のちらつき防止
ProgShowStart (mycTitle)
For mypbProgCnt = 1 To mypbSCount
ProgShowCount (mycTitle)
ProgShowEvent
Macrohome
''繰り返し処理させるマクロ
LoopCom02
''実行中のマクロを約 1 秒間停止(確認のためで実際はコメントにする)
Application.Wait (Now + TimeValue("0:00:01"))
Next
Application.ScreenUpdating = True '画面のちらつき防止解除
ProgShowEnd (mycTitle)
Application.Calculation = xlAutomatic '再計算自動
End Sub
Sub LoopCom02()
Dim myi As Integer
For myi = 1 To 10
myi = 1 + myi
Next
End Sub