I have managed to get this to work by assigning the contents of the cell to a string and then putting them back in the cell - it's inelegant but it works - I'm hoping someone might be able to assist with a better solution though.
Sub ToggleTableHighlight(oTbl As Table)
Dim x As Long
Dim y As Long
Dim strCell As String
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.Visible = msoTrue
.Cell(x, y).Shape.Fill.Solid
.Cell(x, y).Shape.Fill.ForeColor.RGB = RGB(255, 0, 0)
Else
.Cell(x, y).Shape.Fill.Visible = msoFalse
strCell = .Cell(x, y).Shape.TextFrame.TextRange.Text
.Cell(x, y).Shape.TextFrame.TextRange.Text = strCell
End If
End If
Next y
Next x
End With
End Sub