|
▼おぢちゃん さん: こんにちは〜
よこから 確認だけ スミマセン。
>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
|
|