- 締切済み
【エクセルVBA】セルの数式種別により文字色変更
おわかりになる方がいらっしゃいましたらご教示願えませんでしょうか。 今手元にあるエクセルにつき、文字色を一定のルールで変えたいと思っています。 1.シート内参照をしている数式が入っているセルは黒色 2.シート外(別シート)参照している・・・・・・・・・・・・・ 緑色 3.直接入力している・・・・・・・・・・・・・・・・・・・・・・・・・青色 ただし、文字色を変えたくない部分もあるので、セル選択した後に選択したセルに対してのみ 上記の処理をしたいと考えております。 もし御存じの方、若しくはどのようなマクロでできるのかを分かる方がいらっしゃいましたらご教示 願えませんでしょうか。 お忙しい中恐縮ですが、何卒宜しくお願い申し上げます。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 Sub sample() For Each a In Selection Select Case a.HasFormula Case True If InStr(a.Formula, "!") Then myColor = xlNone Else myColor = 4 End If Case Else myColor = 5 End Select a.Font.ColorIndex = myColor Next End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
セルに式があるかどうかは、 Sub test01() For Each cl In Range("A1: D5 ") If cl.HasFormula Then MsgBox cl.Address cl.Interior.ColorIndex = 6 '文字色変更よりこの方が良いのでは End If Next End Sub のようなコードで判るかと思います。 他シート・他ブック他シートを参照しているとシートを記述するために!を使うのも事実です。 しかし, 余りないとは思いますが =Sheet1!A1 (Sheet1のセルにおいて) も他シート参照? や =1としていても、式有りに該当してしまいます。 シート外参照の100%完全な質問のようなこと向けのプロパティやメソッドはVBAに無いと思います。 また他シートが出てくる場合も、VLOOKUPなどの検索表で他シート参照にする場合もあるし、式内に値を入れてしまう場合もあります。 ーー ツールーワークシート分析ー参照元のトレース・参照先のトレースも考えてみましたが本件には役立ちそうも無い。
- kmetu
- ベストアンサー率41% (562/1346)
使用したいシートのマクロに Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Formula Like "=*" Then If Target.Formula Like "*!*" Then Target.Font.Color = vbGreenv Else Target.Font.Color = vbBlack End If Else Target.Font.Color = vbBlue End If End Sub でいかがですか