VBA Code: Remove Underlines from Descenders

Created: Friday, April 26, 2013, posted by at 4:00 am

First a little history. This started with our Stop Underlining Your Descenders! article. Of course, as per that article you can manually remove underlines from all characters such as g, j, p, q, and y that sport descenders. However, the task of individually selecting characters to remove underlines is fine if you need to do so for an important slide title or just your opening slide.

Remove Underlines from Descenders

What if you want to do the same task for an entire presentation, as shown in just one slide below?

Everything underlined

OK, we understand that no one has a complete presentation full of underlined text. We are just exploring a proof-of-concept here! You’ll soon realize that this is too much work to do! Especially since you can do this task in PowerPoint super-quickly using some simple VBA code, as Steve Rindsberg of PowerPoint FAQ explains.

First, you need to know how you can run VBA scripts in PowerPoint. Then, use this code. Explore the code a bit though since Steve has put in some helpful comments so that you can edit some values as required.

Sub FixAllDescenders()
' Removes underlines from all descenders in the presentation
    Dim oSl As Slide
    Dim oSh As Shape
    For Each oSl In ActivePresentation.Slides
        For Each oSh In oSl.Shapes
            If oSh.HasTextFrame Then
                If oSh.TextFrame.HasText Then
                    FixDescenders oSh
                End If
            End If
End Sub
Sub FixDescenders(oSh As Shape)
' Removes underlines from descenders in just the current shape
    Dim x As Long
    Dim oChar As TextRange
    With oSh
    If .HasTextFrame Then
    If .TextFrame.HasText Then
      For x = 1 To Len(.TextFrame.TextRange.Text)
        If IsDescender(Mid$(.TextFrame.TextRange.Text, x, 1)) Then
          .TextFrame.TextRange.Characters(x, 1).Font.Underline = False
        End If
    End If
    End If
    End With
End Sub
Function IsDescender(sCharacter As String) As Boolean
    Dim sDescenders as String
    sDescenders = "gjpqy"
    If InStr(sDescenders, sCharacter) > 1 Then
        IsDescender = True
        IsDescender = False
    End If
End Function

Once you have placed this code in the VBA editor, close the window to get back to your PowerPoint window. Before you proceed further, it’s a great idea to save your file. Be sure to save as a PowerPoint Macro-Enabled Presentation with the PPTM file extension. If you save as any of the other file formats, PowerPoint will offer to remove the macros, and then, of course, the code to remove underlines from descenders will not work! See our PowerPoint File Formats page to learn about these file formats.

Then, open or switch to the presentation with the underlined text and run the macro. To do so, press the Alt + F8 shortcut key. In the Macro dialog box that appears, next to Macro in: choose All open presentations, as shown in the figure below. Click the FixAllDescenders Macro name, and then click the Run button.

The code looks at underlined text throughout your presentation and removes underlines from characters that have descenders. In fact, Steve made the code flexible enough so that you could add exceptions or include some other characters too! This code is also available on Steve’s site, and he will update it as required.

Look at the figure below to see the same slide we explored earlier on this page. The slide below has underlines removed from characters with descenders.

Everything underlined

Thank you so much, Steve.

We tested this code using PowerPoint 2010 for Windows. Also, we have not checked this on PowerPoint 2013 for Windows (or 2011 for Mac). If you do, and it does work or not, then we request you leave a comment below this post and share your thoughts. Of course, you should share your thoughts even if you are a Windows user.

You May Also Like: Use VBA in PowerPoint, Even if You Can’t Program for Nuts | Create Spirographs in PowerPoint Programmatically | Resources on PowerPoint Programming and VBA

Steve RindsbergSteve Rindsberg has been associated with PowerPoint since the product originated more than two decades ago. His PowerPoint FAQ site is a treasure trove of PowerPoint information.

When he’s not updating his site, he’s working on his popular PPTools add-ins for PowerPoint. Steve’s also into a lot of print technology related stuff.

The views and opinions expressed in this blog post or content are those of the authors or the interviewees and do not necessarily reflect the official policy or position of any other agency, organization, employer, or company.

Related Posts

Filed Under: Programming
Tagged as: , , , ,


2 responses to “VBA Code: Remove Underlines from Descenders”

  1. […] April 26, 2013 – VBA Code: Remove Underlines from Descenders […]

  2. Nik says:

    You may have a typo in the code when it uses the HTML &gt instead the greater sign

Microsoft and the Office logo are trademarks or registered trademarks of Microsoft Corporation in the United States and/or other countries.

Plagiarism will be detected by Copyscape

© 2000-2024, Geetesh Bajaj - All rights reserved.

since November 02, 2000