• 締切済み

IF関数で表示される特定の文字の色を変えたい

IF関数で表示される特定の文字の色を変えたい Excelです。 例えば、 =if(a1=0,"abc012","def345") という関数を作って、このabcの色だけ赤に変えたいです。 マクロで Sub Macro1() Dim rng As Range Dim ptr As Integer Const tStr As String = "abc"  For Each rng In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, 23)   ptr = InStr(rng.Value, tStr)   If ptr > 0 Then    rng.Characters(Start:=ptr, Length:=Len(tStr)).Font.ColorIndex = 3   End If  Next rng End Sub と組んだのですが、普通にabcと打つと赤に変わるのですが、IF関数で表示されるabcは赤に変わりません。 どうすればいいか教えてください。

みんなの回答

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

数式内の任意文字のフォント変更はできないと思いますので、関数箇所をVBAに変更しては如何でしょうか。 >IF関数で表示されるabcは赤に変わりません  ⇒ご例示のSpecialCells(xlCellTypeConstants, 23)は数式セルを選択しません。   仮に数式セル選択(xlCellTypeFormulas)に変更してもフォント変更がセル全体に及び期待通りになりません。 因みに現コードで実施するならば、変更対象のセルを選択コピー→形式を選択して貼り付け→値を選択→OKとして全て定数にする必要がありますが、駄目ですよね。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

まず、ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, 23)の段階で定数をせんたくしたわけで、数式セルは除外されています。 それにたとえ除外してなくとも、数式で表示される文字列の一部だけ色などの書式を変えたりすることはできないと思います。 マクロがおできになるようなので、そのワークシート関数の働きをマクロにさせたらいかがでしょう? もしA1セルに入力があった場合に作動させるならシートのチェンジイベントでできますが。 Private Sub Worksheet_Change(ByVal Target As Range)   If Target.Address(0, 0) <> "A1" Then Exit Sub   Range("B1").Value = IIf(Target.Value = 0, "abc012", "def345")   '色を変えるマクロ(略) End Sub

関連するQ&A

専門家に質問してみよう