PowerPoint has evolved into an app which is the Swiss Army knife of content creation, not only for presentations but also printed collaterals, videos and even interactive presentations.

In this second part of our series on supercharging PowerPoint interactive presentations with VBA we look at how you can provide your users with visual feedback for active areas of your slide using a mouse hover technique.

In part 1 you learned how you can add links to objects on slides that, when clicked, take the user to a different slide. But how does the user know that the object you’ve created the link for is an active object on your slide? In other words, how do they know it is clickable?

Good design plays an important part here. If you look at the slide below, it’s fairly obvious that the items in the left hand menu might do something:

BrightCarbon PowerPoint clear active icons in interactive presentations

However, in the next example, it’s not immediately clear that the three icons, or their corresponding text boxes link to other parts of the presentation:

You can add built-in PowerPoint visual feedback for the user by selecting the linked object and clicking the Insert tab in PowerPoint. Then, in the Links group click the Action button. As you discovered in Part 1, this opens the window below where you can set up your desired link in the Mouse Click tab. For the visual feedback you click the second Mouse Over tab and check the Highlight when mouse over option:

BrightCarbon PowerPoint Insert Action Highlight

Now when you hover your mouse over the active area in slide show mode you can see which content elements are active:

unclear active icons in Slide Show mode interactive presentations

In the example above, the mouse is hovered over the icon of the ship. Can you tell it’s an active object with a hyperlink? That very faint green dotted line is what PowerPoint uses by default. It’s not very clear at all is it? You might even say it’s pretty ugly! Not what you want for your interactive presentations.

You can do much better with VBA

VBA: Highlighting active objects in interactive presentations

You can use our custom VBA macro to do something much smarter:

Public Sub GraphicHover(ByRef oGraphic As Shape)

  oGraphic.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent1

End Sub

You can probably work out that this macro changes the fill colour of the object (called a Shape in VBA) to Accent 1 from the theme. Once you’ve added this to your PowerPoint file (read this to find out how) then you can uncheck the PowerPoint highlighting feature and instead assign the Mouse Over event to Run macro, selecting the GraphicHover macro:

BrightCarbon PowerPoint mouse hover macro action

Now when you move the mouse over the icon during a slide show the fill colour changes:

But as you can see at the end of the video there’s a major problem. When you move away from the icon, it doesn’t return to its original state.

What you need here is a Mouse Out event in the Actions window.

Spoiler alert, it’s not there! But don’t worry, with some out-of-the-box thinking there’s a clever hack to overcome this. What you need to do is to create an invisible shape which resets the hover state of the icon as you hover over this invisible shape. Here are the steps to create your invisible shape:

  1. First make sure you’re using a shape for the icon that can be filled e.g. an SVG icon or a PowerPoint vector shape (a PNG/JPG picture won’t work)
  2. Add our ResetGraphicHover macro from the code snippet below to your PowerPoint VBA project (read this to find out how)
  3. Insert a rectangle, sized and positioned to cover the whole slide
  4. From the Insert tab, click the Action button and set the Mouse Over event on the rectangle to run our macro ResetGraphicHover
  5. Right-click the rectangle and then click Format Shape…
  6. In the Format Shape pane, set the Fill / Transparency slider to 100% (don’t set it to No fill) and set the Line to No Line
  7. Send it to the back by clicking the Home tab followed by Arrange and Send to Back

Tip: to prevent this rectangle from getting deleted, moved or interfering with the editing of your slide, you can create it on a slide master layout instead.

Here’s the code for the reset hover macro:

Public Sub ResetGraphicHover(ByRef oCover As Shape)

  Dim oSld As Slide

  Dim oShp As Shape

  Set oSld = oCover.Parent

  For Each oShp In oSld.Shapes

    With oShp.Fill.ForeColor

      If .ObjectThemeColor = msoThemeColorAccent1 Then .ObjectThemeColor = msoThemeColorDark1

    End With


End Sub

Now when you run the interactive presentation, the icon fill colour changes as you hover over it and resets when you hover away from it, triggered as you hover over the invisible cover shape:

That’s much clearer visual feedback. You can go further and set all sorts of other properties in the hover and reset macros such as outline colour, transparency, line weights and so on:


Now that you know how to use VBA when creating interactive presentations, check out my post on restoring default slide master layouts with VBA or discover our Click-and-Explore service to find out how we can help create beautifully-designed interactive presentations for you.

Leave a comment
Written by

Jamie Garroch

Senior technical consultant

View Jamie Garroch's profile

Related articles

  1. Image of Simon L Simon L says:

    Hi thanks for the great insight once again. In addition to a question that I posed in the introduction blog about using a Mousedown function, as opposed to a mouse click, I have used the above to better highlight menu navigation buttons which looks great, however, as it is used to navigate to and from other slides I find that the button highlight cover / fill color used whilst hovering over the buttons has a memory and as you do not move off the button the reset hover is not triggered, can you assist with how to reset this given I do not think it is the same as resetting the slide animation as explained on Supercharging PowerPoint interactive presentations with VBA (Part 1) which I also tried. Much appreciated

  2. Image of Jamie Garroch Jamie Garroch says:

    Hi Simon. That’s a good point! You could have two macros for a given shape, one set to run on Mouse Over to do the highlighting and the other on Mouse Click to reset the shape’s style and go to the desired slide/URL etc. Note that because you want to perform a custom action on click that you need to code the macro to do the hyperlinking rather than using the standard PowerPoint interface. Try setting this as the mouse click macro as a good place to start:

    Public Sub ShapeClick(ByRef oShp As Shape)
    ResetGraphicHover oShp
    ActivePresentation.SlideShowWindow.View.GotoSlide 2
    End Sub

Leave a Reply

Join the BrightCarbon mailing list for monthly invites and resources

Tell me more!

Email doesn’t do justice to how thrilled I am with this work - it’s beyond all expectations so a huge, huge, thanks!!!

Luke Kershaw SquareTrade