# VBA - Display Message on Status Bar
*Source: [Display Message on Status Bar - Erlandsen Data Consulting](https://erlandsendata.no/?t=vbatips&c=application&p=2120#main)*
See Also: [[VBA - Progress Bar in the Status Bar]]
***

***
If you turn off the screen updating, and your macros takes some time to finish, the user may think that the computer has stopped to respond.
Because of this it's a good programming rule to inform the user of the macro progress by displaying a message on the status bar at the bottom of the screen.
Here is an example:
```VBA
Sub StatusBarExample()
Application.ScreenUpdating = False
' turns off screen updating
Application.DisplayStatusBar = True
' makes sure that the statusbar is visible
Application.StatusBar = "Please wait while performing task 1..."
' add some code for task 1 that replaces the next sentence
Application.Wait Now + TimeValue("00:00:02")
Application.StatusBar = "Please wait while performing task 2..."
' add some code for task 2 that replaces the next sentence
Application.Wait Now + TimeValue("00:00:02")
Application.StatusBar = False
' gives control of the statusbar back to the programme
End Sub
```
```VBA
Sub ShowProgress(strStatusText As String, dblPercentDone As Double)
' updated 2000-08-08 by OPE
Const clngBarSize As Long = 20, clngBarChar As Long = 45, clngProgressChar As Long = 135
Dim lngProgress As Long
If dblPercentDone < 0 Or dblPercentDone > 1 Then Exit Sub
lngProgress = CLng(dblPercentDone * clngBarSize)
Application.StatusBar = Application.Rept(Chr(clngProgressChar), lngProgress) & _
Application.Rept(Chr(clngBarChar), clngBarSize - lngProgress) & " " & _
Format(dblPercentDone, "0 %") & " " & strStatusText
End Sub
```
This procedure does the same as the previous one, but you have a little more options if you want to use different types of characters when displaying your progress bars.
```VBA
Sub ShowProgress(strStatusText As String, dblPercentDone As Double, _
Optional lngBarChar As Long = 45, Optional lngProgressChar As Long = 135, _
Optional lngBarSize As Long = 20)
' updated 2000-08-08 by OPE
' strStatusText: text to display on the status bar
' dblPercentDone: percent finished, values between 0 to 1
' lngBarSize: count of characters in the bar, values between 10 to 100
' lngBarChar: the progress bar character
' lngProgressChar: the progress character
Dim lngProgress As Long ' count of progress characters
If dblPercentDone < 0 Or dblPercentDone > 1 Then Exit Sub
If lngBarChar < 32 Or lngBarChar > 255 Then lngBarChar = 45 ' default
If lngProgressChar < 32 Or lngProgressChar > 255 Then lngProgressChar = 135 ' default
If lngBarSize < 10 Or lngBarSize > 100 Then lngBarSize = 20 ' default
lngProgress = CLng(dblPercentDone * lngBarSize)
Application.StatusBar = Application.Rept(Chr(lngProgressChar), lngProgress) & _
Application.Rept(Chr(lngBarChar), lngBarSize - lngProgress) & " " & _
Format(dblPercentDone, "0 %") & " " & strStatusText
End Sub
```
You can use the procedures above like this:
```VBA
Sub TestShowProgress()
Dim i As Long, lngTotal As Long
lngTotal = 10
For i = 1 To lngTotal
ShowProgress "This is a test", i / lngTotal ' first procedure
' ShowProgress "This is a test", i / lngTotal, 176, 149 ' second procedure
' replace the line below with your own task(s)
Application.Wait Now + TimeValue("00:00:01") ' just for demonstration purposes
Next i
Application.StatusBar = False
End Sub
```
***
## Appendix: Links
- [[2-Areas/Code/_README|Code]]
- [[Development]]
- [[Excel]]
- [[Microsoft Office]]
- [[Excel - VBA]]
*Backlinks:*
```dataview
list from [[VBA - Display Message on Status Bar]] AND -"Changelog"
```