Hi all,
I have created the following macro to toggle on/off red highlight for selected text whether in a text box or table. For the table there doesn't have to be text for it to toggle the highlight.
However, when in a table and I toggle the highlight off, on the slide I am on, the highlight toggles off, but in the slide layout and on the slide show (if running) the highlight remains. Is there something I am missing to force the highlight to toggle off?
Sub highlghtred() Dim oShp As Shape Dim oTbl As Table Dim oTxtFrame As TextFrame If ActiveWindow.Selection.Type = ppSelectionText Then If Not ActiveWindow.Selection.TextRange.Parent Is Nothing Then Set oTxtFrame = ActiveWindow.Selection.TextRange.Parent Set oShp = oTxtFrame.Parent Call ToggleShapeHighlight(oShp) End If End If If ActiveWindow.Selection.Type = ppSelectionShapes Then If ActiveWindow.Selection.HasChildShapeRange Then Call ToggleHighlight(ActiveWindow.Selection.ChildShapeRange) Else Call ToggleHighlight(ActiveWindow.Selection.ShapeRange) End If Else If ActiveWindow.Selection.Type <> ppSelectionNone Then If ActiveWindow.Selection.ShapeRange.HasTable Then For Each oShp In ActiveWindow.Selection.ShapeRange If oShp.Type = msoTable Then Call ToggleTableHighlight(oShp.Table) End If Next oShp End If End If End If End Sub Sub ToggleHighlight(oShpRng As ShapeRange) Dim shp As Shape Dim ActiveShape As Shape For Each shp In oShpRng Set ActiveShape = shp 'MsgBox ("Shape color is currently " & shp.Fill.BackColor.RGB) If ActiveShape.HasTextFrame Then 'MsgBox ("Found text " + ActiveShape.TextFrame.TextRange.Text) If ActiveShape.TextFrame.TextRange.Text <> "" Then Call ToggleShapeHighlight(ActiveShape) End If Else If ActiveShape.Type = msoTable Then Call ToggleTableHighlight(ActiveShape.Table) End If End If Next shp End Sub Sub ToggleTableHighlight(oTbl As Table) Dim x As Long Dim y As Long With oTbl For x = 1 To .Rows.Count For y = 1 To .Columns.Count If .Cell(x, y).Selected Then If .Cell(x, y).Shape.Fill.Visible = msoFalse Then .Cell(x, y).Shape.Fill.ForeColor.RGB = RGB(255, 0, 0) .Cell(x, y).Shape.Fill.Solid Else .Cell(x, y).Shape.Fill.Visible = msoFalse End If End If Next y Next x End With End Sub Sub ToggleShapeHighlight(oShp As Shape) If oShp.Fill.Visible = msoFalse Then oShp.Fill.ForeColor.RGB = RGB(255, 0, 0) oShp.Fill.Solid oShp.Fill.Visible = msoTrue Else oShp.Fill.Visible = msoFalse End If End Sub