Article ID: 174026
Article Last Modified on 9/26/2003
Name: txtMin
Default Value: 10
Validation Rule: Is Not Null
Validation Text: Please Enter a Numerical Value
Name: txtMax
Default Value: 5000
Validation Rule: Is Not Null
Validation Text: Please Enter a Numerical Value
Name: txtStep
Default Value: 10
Validation Rule: Is Not Null
Validation Text: Please Enter a Numerical Value
Name: CtlProgress
Width: 1.95
Height: .15
Name: cmdRun
Caption: Run
Name: cmdClear
Caption: Clear
Name: lblComplete
Caption: 0% Complete
Visible: No
Private Sub cmdRun_Click()
Dim prg As ProgressBar
Dim IntValue As Long
Dim fmin As TextBox, fmax As TextBox, fstep As TextBox
Dim strComplete As String
Dim Complete As Label
Set fmin = Forms!frmProgressBar!txtMin
Set fmax = Forms!frmProgressBar!txtMax
Set fstep = Forms!frmProgressBar!txtStep
Set prg = Me!CtlProgress.Object
Set Complete = Me!lblComplete
' If the txtMin textbox contains a non-numeric value
' or a number less than 0, force the user to
' re-enter data in correct format.
If Val(fmin) <= 0 Then
MsgBox "Please enter a positive numerical value above 0 " & _
"in the Minimum text box."
fmin = Null
fmin.SetFocus
Exit Sub
End If
' If the txtMax text box contains a non-numeric
' value or a number less than the value in txtMin,
' force the user to re-enter data in correct format.
If Val(fmax) <= 0 Or Val(fmax) <= fmin Then
MsgBox "Please enter a positive numerical value above " & _
fmin & " in the Maximum textbox."
fmax = Null
fmax.SetFocus
Exit Sub
End If
' If txtStep contains a non-numeric value or a number less
' than 1, force the user to re-enter data in correct format.
If Val(fstep) < 1 Then
MsgBox "Please enter a number less than or equal " & _
"to 1 in the Step text box."
fstep = Null
fstep.SetFocus
Exit Sub
End If
' The maximum value for the MAX property of a progress bar
' is 10,000; if the number entered in txtMax is over 10,000,
' set the MAX property to 10,000. Otherwise, set the MAX
' property to whatever the user has entered.
If fmax > 10000 Then
prg.Max = 10000
Else
prg.Max = fmax
End If
' The maximum value for the MIN property of a progress bar
' is also 10,000; if the number entered in txtMin is
' greater than 10,000, set the MIN property to 9,999
' so it is still less than the MAX property. Otherwise,
' set the MIN property to whatever the user has entered.
If fmin > 10000 Then
prg.Min = 9999
Else
prg.Min = fmin
End If
IntValue = fmin
' Increment the progress bar and % complete label as long as the
' Value assigned to it is less than or equal to the MAX property
' of the progress bar.
Complete.Visible = True
Do
IntValue = IntValue + Me!txtStep
If IntValue >= prg.Max Then
IntValue = prg.Max
End If
prg.Value = IntValue
strComplete = Format((prg.Value / prg.Max) * 100, "##") & _
" % Complete"
Complete.Caption = strComplete
DoCmd.RepaintObject
Loop While IntValue < prg.Max
End Sub
Private Sub cmdClear_Click()
Dim prg As ProgressBar
Dim Complete As Label
Set prg = Me!CtlProgress.Object
Set Complete = Me!lblComplete
' Clear the Progress Bar by setting its value to the
' Control's MIN property; then hide the Complete label.
prg.Value = prg.Min
Complete.Visible = False
End Sub
Additional query words: progress bar
Keywords: kbhowto KB174026