|    | 
     もう十分な回答がありますけど、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かと思います。 
(この例では、そうしたものは無い前提かもしれませんが)  
 | 
     
    
   |