How to Add a ‘Progress Bar’ to Your PowerPoint Slides Using a Simple Macro

If you are giving a dense, hour-long corporate presentation with 80 slides, your audience can easily experience “meeting fatigue.” Without a visual indicator of how close they are to the end, people will start checking their phones, wondering if you are on Slide 10 or Slide 70.

While YouTube and Netflix have built-in scrub bars that show exactly how much time is left in a video, PowerPoint does not have a native “Progress Bar” feature. If you want a visual progress indicator at the bottom of your slides, you usually have to manually draw 80 different rectangles of varying lengths, which takes hours and breaks instantly if you add or delete a slide.

Instead of manual labor, you can use a tiny script (a VBA Macro) to command PowerPoint to mathematically calculate the total slide count and automatically draw a perfectly scaled progress bar across the bottom of every single slide in your deck in less than five seconds.

Step 1: Enable the Developer Tab

Macros are considered advanced features and are hidden by default.

  1. Open your PowerPoint presentation.
  2. Click on File > Options (at the very bottom left).
  3. Click on Customize Ribbon in the left sidebar.
  4. In the right-hand list, check the box next to Developer. Click OK.

Step 2: Open the Visual Basic Editor

  1. Click the newly visible Developer tab on the main ribbon.
  2. Click the Visual Basic button (or press Alt+F11).
  3. A complex, retro-looking coding window will appear.
  4. In the top menu, click Insert > Module. A blank white text editor will open.

Step 3: Paste the Macro Code

Copy and paste the following exact block of code into the blank white window:

Sub AddProgressBar()
    Dim totalSlides As Integer
    Dim currentSlide As Integer
    Dim barWidth As Double
    
    totalSlides = ActivePresentation.Slides.Count
    
    For currentSlide = 1 To totalSlides
        ' Calculate the width of the bar for the current slide
        barWidth = (ActivePresentation.PageSetup.SlideWidth / totalSlides) * currentSlide
        
        ' Draw the rectangle (Left, Top, Width, Height)
        ' Top is set to the bottom edge minus 10 points for a thin bar
        Set shape = ActivePresentation.Slides(currentSlide).Shapes.AddShape(msoShapeRectangle, _
            0, ActivePresentation.PageSetup.SlideHeight - 10, barWidth, 10)
            
        ' Format the bar (Color and Borders)
        shape.Fill.ForeColor.RGB = RGB(0, 120, 215) ' Windows Blue
        shape.Line.Visible = msoFalse
    Next currentSlide
End Sub

Step 4: Execute the Macro

  1. With your cursor inside the code, look at the top toolbar and click the Green Play Button (or press F5).
  2. You can now close the Visual Basic window.

The Result

Look at your presentation. You will see a sleek, blue progress bar running along the very bottom edge of every slide. On Slide 1, it will be a tiny dot. By the middle of the deck, it will span 50% of the screen. On the final slide, it will perfectly stretch from edge to edge.

Note: Because this script physically draws a rectangle on the slide, it does not auto-update. If you add 5 new slides tomorrow, simply run the macro again, and it will mathematically recalculate and overwrite the bars to fit the new length.

RELATED POSTS

  • Save & Open PowerPoint in .PPSX Format for Instant Slideshow
  • How to Extract All Images and Media from a PowerPoint Presentation Using a ZIP Archiver
  • How to Embed Custom Fonts Directly Inside a PowerPoint File to Prevent Missing Font Errors on Other Computers
  • How to Record a Presentation with Audio in PowerPoint
  • How to Completely Remove the Background from an Image Directly Inside PowerPoint
  • Get the best tech tips delivered straight to your inbox.

    Join thousands of readers mastering Apple, Google, Microsoft, and Linux.