Although this is not a solution for your Progress Bar question:
when I am up against a large data processing 'job', I will typically turn off
the screen updating & auto calculation options.
sub processData( )
Application.ScreenUpdating = False
Application.Calculation = xlManual
rowmax = activesheet. usedrange. rows.count
for i = 1 to rowmax
' my functionality
next
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
end sub