| 
    
     |  | もう十分な回答がありますけど、NavigateArrowを使うこんな方法は どうでしょうか。nさんの正規表現手法が常識的で推奨ですけれど。
 
 Sub test()
 Dim ws     As Worksheet
 Dim myRange   As Range
 Dim r      As Range
 Dim refercell  As Range
 Dim k      As Long
 
 Application.ScreenUpdating = False
 Set ws = ActiveSheet
 ws.Cells.Interior.ColorIndex = xlNone
 ws.ClearArrows
 Set myRange = Union(ws.Cells.SpecialCells(xlCellTypeFormulas, 23), _
 ws.Cells.SpecialCells(xlCellTypeConstants, 23))
 ' ↑ 少し甘い。該当なしの場合エラーになるよ。
 For Each r In myRange
 r.ShowDependents
 On Error Resume Next
 k = 0
 Do
 k = k + 1
 Set refercell = r.NavigateArrow(TowardPrecedent:=False, _
 ArrowNumber:=1, LinkNumber:=k)
 If Err.Number = 0 And refercell.Parent.Name <> "Sheet1" Then
 r.Interior.Color = vbYellow
 Exit Do
 End If
 Loop Until Err.Number <> 0 _
 Or refercell.Address(external:=True) _
 = r.Address(external:=True)
 On Error GoTo 0
 Next
 ws.Activate
 ws.ClearArrows
 Application.ScreenUpdating = True
 End Sub
 
 これであれば、
 ・単純参照(例: =Sheet1!A1のような)ではない、
 = B1 + Sheet1!A1 のような参照でもOKです。
 ・また、名前を介した参照でもOKかと思います。
 (この例では、そうしたものは無い前提かもしれませんが)
 
 |  |