|    | 
     ▼おぢちゃん さん: こんにちは〜 
よこから 確認だけ スミマセン。 
 
>sheet1の多数のセルから同一ブック内の他の複数シートに向けて"リンク貼り付け"がされています。 
>sheet1のリンク貼り付け"元"となっているセルに一括で色をつけたいのですが, 
 
(確認) 
簡単のため、3枚の[Sheet1] [Sheet2] [Sheet3] があるとすると、 
[Sheet1]  
  リンク元 シート 
 
[Sheet2] このシートに Sheet1 への参照がある 
 たとえば、 [B2:B100] = "=Sheet1!A2"  
   
[Sheet3] このシートにも Sheet1 への参照がある 
 たとえば、 [C2:C100] = "=Sheet1!B2"  
   
ということでよろしいですか? 
 
もしそうだとすると、難しいですねぇ 
たとえば、Sheet1 内のセルを順にLoopして、そのセルが どこか他の 
セルから参照されているかを調べる DirectDependents プロパティが 
あります。 
 Sub try1() 
  Dim c As Range, r As Range 
   
  With Sheet1.UsedRange 
    .Interior.ColorIndex = xlNone 
    For Each c In .Cells  'Sheet1 内をループ 
      On Error Resume Next 
      Set r = c.DirectDependents 'cセルを参照しているセル 
      On Error GoTo 0 
      If Not r Is Nothing Then 
        c.Interior.ColorIndex = 6 
        Set r = Nothing 
      End If 
    Next 
  End With 
End Sub 
これを実行すると、Sheet1自身のどこかから参照のあるセルには 
色がつきますが、そうでなく、別シートから参照されているセルには 
残念ながら色がつきません。 
------------------------------------------------------ 
DirectDependents プロパティは作業中のシートでのみ有効で、 
リモート参照をトレースできないことに注意してください。 
------------------------------------------------------ 
手動で、Sheet1の [A2]セルをアクティブにして、 
[ツール]-[ワークシート分析]-[参照先のトレース]で調べたときは 
Sheet2から Sheet1のA2 セルへの参照があるので、ちゃんと 
別シートのアイコンが出て、Sheet1の[A2]からそのアイコンへ 
矢印が描かれていたんですけどね。 
 
よくわからないけど、力技で、 
Bookの(Sheet1 以外の)すべてのシートをLoop して、 
各シートの「数式の入っている」すべてのセルをしらみつぶしに 
調べていって、 そこに "=Sheet1!A2" とかあれば、 
Sheet1!A2 セルを色塗する、という方向(別シート、参照先から 
Sheet1のリンク元セルを特定する)でなら、時間はかかるけれど 
出来そうな気がします。(かぶりますが) 
Sub try2() 
  Dim ws As Worksheet 
  Dim c As Range, r As Range, rs 
  Dim Ad$, ThisSheetname$, ss$ 
  Dim dic As Object 
  Dim j As Long 
   
  '------- 対象シートをアクティブにして実行 ------ 
  Set dic = CreateObject("Scripting.Dictionary") 
  ThisSheetname = "=" & ActiveSheet.Name & "!" 
  For Each ws In Worksheets 
    If ws.Name <> ThisSheetname Then 
      On Error Resume Next 
      For Each c In ws.UsedRange.SpecialCells(xlCellTypeFormulas) 
        ss = c.Formula 
        j = InStr(ss, ThisSheetname) 
        If j > 0 Then dic(Mid$(ss, j + 1)) = Empty 
      Next 
    End If 
  Next 
  If dic.Count Then 
    ActiveSheet.UsedRange.Interior.ColorIndex = xlNone 
    For Each rs In dic.Keys() 
      Excel.Range(rs).Interior.ColorIndex = 33 
    Next 
  End If 
   
End Sub 
 | 
     
    
   |