• 締切済み

【エクセルVBA】セルの数式種別により文字色変更

おわかりになる方がいらっしゃいましたらご教示願えませんでしょうか。 今手元にあるエクセルにつき、文字色を一定のルールで変えたいと思っています。 1.シート内参照をしている数式が入っているセルは黒色 2.シート外(別シート)参照している・・・・・・・・・・・・・ 緑色 3.直接入力している・・・・・・・・・・・・・・・・・・・・・・・・・青色 ただし、文字色を変えたくない部分もあるので、セル選択した後に選択したセルに対してのみ 上記の処理をしたいと考えております。 もし御存じの方、若しくはどのようなマクロでできるのかを分かる方がいらっしゃいましたらご教示 願えませんでしょうか。 お忙しい中恐縮ですが、何卒宜しくお願い申し上げます。

みんなの回答

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

一例です。 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/17068)
回答No.2

セルに式があるかどうかは、 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)
回答No.1

使用したいシートのマクロに 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 でいかがですか

関連するQ&A

  • Excel 違った数式の入ったセルのみちがう色にする

    Excelシートのあるセル範囲に同じ数式(相対セルを参照にする)が入っています。何かの都合であるセルのみ違った数式を入れた場合、後でどのセルに違った数式を入れたか人目でわかるように、例えば条件付き書式等により、違った数式が入ったセルのみ色を変えるようなことができますか。

  • Excelで数式内の文字色を一部だけ変更したい

    数式内の文字列の色を一部だけ変更したいのですが、どなたかご存知の方ご教授ください。 セルごと文字色を変更することは可能なのですが一部だけの変更ができません。 下記、例をあげます。 数式:="No"&A10&"を参照" 表示:No10を参照 上記のNo10の文字色を赤等に変更するにはどうしたらよろしいでしょうか。

  • EXCEL 2003 数式中の参照セルについて

    数式であるシート(シート1とします)中の値として、 別シート(シート2とします)のセルを参照するとします。 (例a) シート1中の値 =シート2!J36 ※ J36は例 ここまではよいのですが、 上記の行番号「36」の部分を 更に別の参照値から引っ張ってくることは可能でしょうか? やりたいことのイメージ例として以下に記載します。 (例b) =シート2!J(=A1) ※ここの「A1」はシート2中の参照するセル番号を指定するための シート1中に設けたセルとします。 ※上記の数式は実際にはエラーになり入りません。 最初の例aでは、シート2中の参照するセル番号を数式編集して 指定しないといけないため、参照箇所が多いと大変ですが、 もし、例bのような指定ができればシート2中の参照するセル番号の 入力は一箇所ですみ楽になりありがたいと考えています。 わかりにくい文章ですみません。よろしくお願いします。

  • エクセルのセル参照

    エクセルですが、セル参照の件で困っとります。 同一シート内ではセル参照(shift =)ができるのですが、他のシートのセルを参照させると、数式が出て、セル内に文字が出ません。 どうすれば他のシートのセル参照ができるようになりますか?

  • エクセル2003で、数式で出されたセルの値によって、そのセル自体を塗り

    エクセル2003で、数式で出されたセルの値によって、そのセル自体を塗り分けしたいのですが、7種類あるため条件付書式では対応出来ず困っています。 具体的には「2.7000~2.7099」ならピンク、「2.7100~2.7199」なら黄色、「2.7200~2.7299」なら黄色「2.7300~2.7399」なら緑色「2.7400~2.7499」なら青色「2.7500~2.7599」なら紫「2.7600~2.7699」なら灰色 という具合です 漠然としていて申し訳ないのですが、マクロを使用したいと思っています。お力を貸していただけないでしょうか?

  • excel 特定セルの数式表示

    通常A1セルに=1+1と数式を入力するとセル表示は2となります。 これを=1+1と数式を入力したときに、同じA1セルに文字列ではなく=1+1と表示だけしたいのです。 別セルにてA1セルの計算結果2を参照していますので・・・・ ツール→オプション→表示→数式でシートのすべての数式を表示できることは知っていますが、そうでなくて一部のセルだけ表示したいのです。 ご教授の程宜しくお願い致します。

  • エクセルVBAについてお尋ね致します。数式が入力されたセルを異なるセル

    エクセルVBAについてお尋ね致します。数式が入力されたセルを異なるセルの条件によって「値」のみ残す方法を模索しております。 使用する列および行の例 列=A、B  行=5~10、15~20、25~30(A列、B列共通) 上記対象セルの内訳 A列(参照セル)=数値 ※空欄の場合もあります B列(変更セル)=数式(Aセル数値 * ○○%) ※B1セルの例:=IF(A1="","",A1*10%) のような数式が記入されております。 (例) Private Sub CommandButton1_Click() ’参照セルの指定 ("A5:A10","A15:A20","A25:A30") のようなコード*** ※現在はAセルの範囲としておりますが、後に変更の可能性を有しますので範囲指定が可能な形式を望みます。 ’変更セルの指定 セル指定のコード*** ※現在はBセルとしておりますが、これも後に変更の可能性を有しますのでA・B・Cのような入力(もしくはA=1、B=2、C=3)による指定可能な形式を望みます。 ’参照セル(Aセル)に数値が入力されている場合、数式から得られた変更セル(Bセル)の値を”値のみ”で残す。 実行コード*** ※参照セル(Aセル)が空欄の場合は変更を望まないので、変更セル(Bセル)は何も致しません。(数式のまま残す) End Sub このようなマクロを望んでおります。 イメージとしては数値がAセルに入力されていた際に同じ行のBセルにおいて右クリックコマンド内〔コピー〕 → 〔形式を選択して貼り付け〕 → 〔値〕の貼り付けを行うことをご想像下さい。 列や行の変更が予想されるので変更が可能なことを望んでおりますが、結果が伴えば他の体裁は気に致しません。 お手数ですがご教授宜しくお願い致します。 以上

  • セル内の数式中の文字列を検索

    セル内に数式が入っている場合、その数式中の文字列を検索する関数がありますか。 例えばB1セルに=Sheet1!K2*Sheet2!K2*Sheet5!K2 B2セルに=Sheet4!K2*Sheet3!K2*Sheet6!K2 D1セルにB1の数式内のSheet2という文字があれば1を表示させ    無ければ0を表示させるというような関数はあるでしょうか。

  • Excelのセル内の文字列の文字色変更について

    申し訳ございません、どなたか教えていただけないでしょうか。 エクセルのセル内の文字列を、ある特定の文字列の時に文字色を変えたい。 例えば、赤、青、黄、桃、緑という文字列をセルの中に入れた時、 その文字の色がそれぞれ、 「赤」の時:赤色の文字色 「青」の時:青色の文字色 「黄」の時:黄色の文字色 「桃」の時:桃色の文字色 「緑」の時:緑色の文字色 というように自動的に設定をしたいのです。 条件付き書式では、3種類までならできますが、4種類以上だとダメですよね。 できればマクロではなく、セルの書式設定「ユーザー定義」で設定したいのですが、 公式はございますでしょうか。 数値によって色を変更する方法は、いろいろなサイトで確認しましたが、 文字列で色を変えるという方法がなかったもので質問をいたしました。 よろしくお願いいたします。

  • Excelのセルが計算結果ではなく数式になってしまいます。

    Excelでワークシートを作って計算させているのですが、突然、数式を入力しているセルが、その計算結果ではなく、数式そのものが表示されてしまうのです。 例:セルを参照しようとして、「=H5」と入力すると、本当なら、H5のセルにある数字、文字が表示されるわけですよね。しかし、突然そのセルが「=H5」という計算式そのものの表示になってしまいました。 F2を押して、Enterするとまた参照してきたりするのですが、原因が分かりません。ずっと=H5のままということもあります。 原因と対処方法を教えてください。よろしくお願いします。