- 締切済み
変更箇所を赤文字で
エクセルで、表の数値を入れ替えた時、変更となった数値が自動的に 赤文字等になるようにできないでしょうか? 変更となった数値とは、入れ替えた数値とそれに関わる縦横等の計算箇所です。 WORDでは、修正箇所は赤文字等わかるようにできるみたいなのですが、 エクセルでできないものか・・・・ どなたか解る人がいたら、教えて下さい。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
sheet1のChangeイベントに Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo err1 If Target.Dependents Is Nothing Then Else Target.Dependents.Select Selection.Interior.ColorIndex = 6 End If Exit Sub err1: End Sub を入れる。 関連して変わったセルはセルを黄色で表示します。 #1回答と似てますが、ForEachを使わなくてもできそうで、使ってません。 他シートのデータを使っているとか、他シートで使っている場合はDependentsプロパティは捉えられないようです。 テストデータ例 A列ーG列 1-17行 ーー A列 11 34 2 2 ー ー =A2+1 7 4 ー ー ー =A5+3 ー ー =A2+5 ー ー ー ー ー =A5+12 ー 14 ー 12 ー ー =A5*2 ー ー ー ー ー ー =F8+1 ー ー ー ー =D4+1 上記例は2段参照まで。ーは横詰めを防ぐためで、空白セル。
- zap35
- ベストアンサー率44% (1383/3079)
#01です。手で変更したセルは「赤色」。そのセルを参照しているセルは「緑色」にするようにしてみます Private Sub Worksheet_Change(ByVal Target As Range) Dim r, trg As Range On Error GoTo ext For Each r In Target r.Font.ColorIndex = 3 '赤色にする If Not r.Dependents Is Nothing Then For Each trg In r.Dependents trg.Font.ColorIndex = 4 '緑色にする Next trg End If ext: Next r End Sub
- zap35
- ベストアンサー率44% (1383/3079)
入力するシートの「シート名タブ右クリック」→「コードの表示」で開く画面に以下のマクロを貼り付けてください。シート画面に戻り、値の入力を行うとフォントが「赤」になります。 Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range For Each r In Target r.Font.ColorIndex = 3 Next r End Sub それは簡単なんですが…、いつ文字を黒に戻します? セーブしたら戻す? ブックを開いたときに戻す? それを考えないとシートが赤文字だらけになって、変更箇所が分からなくなりますよ。 とりあえずブックを開いたときに、文字色を「自動」に戻すマクロも書いておきます。以下のマクロはALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。(先のマクロと貼り付ける画面が異なりますのでご注意!) なお「入力シート」の部分は実際のシート名に変更してください Sub auto_open() Worksheets("入力シート").Cells.Font.ColorIndex = xlAutomatic End Sub
お礼
zap35さん、ありがとうございました。「マクロ」って使った事なかったのですが、zap35さんの書かれたとおりやってみたら、入力した箇所は赤字で残りました。 で、もう1段階なのですが、表計算なので入力した値は同シートの縦横とか別シートにリンクされるようになっております。 入力した箇所のみならず、計算・リンクにより値が変わった箇所も赤字で残すことはできないでしょうか??