You might try giving Word some breathing space for its own housekeeping:
Code:
Sub Grey()
Application.ScreenUpdating = False
Dim Tbl As Table, Cll As Cell, i As Long
For Each Tbl In ActiveDocument.Tables
For Each Cll In Tbl.Range.Cells
i = i + 1: If i Mod 500 = 0 Then DoEvents
With Cll
If Split(.Range.Text, vbCr)(0) = "-1" Then
.Shading.BackgroundPatternColor = wdColorGray10
.Range.Text = ""
End If
End With
Next
Next
Set Cll = Nothing: Set Tbl = Nothing
Application.ScreenUpdating = True
End Sub