• ベストアンサー

セルの値が変化したら、値を着色して識別したい

PC環境: Win10 32bit エクセル2010 セルの値が変化したら、その値を着色して識別したいと思い、Changeイベントで    Target.Font.ColorIndex = 3 このようなコードを作成しましたが、機能しません。 実は、対象のセルには数式が書き込まれていて、値は変わっても数式は 変わらないために機能しないのでは?と思っています。  数式: =RSS|'1234 .T'! 現在値 このような場合でも、機能させる方法があれば、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.1

関数での値の変化では、シートイベントが働かないのは、その通りだと思います。 数式の意味が不明なのですが、別シートを参照しているのでしょうか? もし別シートの値が手動で入力されるのであれば、シートが変化するシートにWorksheet.Change イベントのコードを記載し、別シートのフォントカラーを指定色に変更させては如何でしょう。 下記はsheet1のA1~A10のセル範囲の値が変更になった場合、sheet2のB1~10の同じ行番号セルのフォントカラーを変更します。 Worksheet.Change イベントのコードは当然sheet1のシートモジュールに記載します。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1:A10")) Is Nothing Then Exit Sub Worksheets("sheet2").Range("B" & Target.Row).Font.ColorIndex = 3 End Sub

dORAGON2394
質問者

お礼

動作確認は、楽天RSSの起動上の都合から、土日を除くの通常日 に行うことになりますが、ご教授頂いた内容で行いたいと思います。 ありがとうございました。

dORAGON2394
質問者

補足

早速のご回答、本当にありがとうございます。 説明が不足で申し訳けありませんでした。 数式の内容の件ですが、この数式は楽天RSS関数で リアルタイムの株価を表示するための関数です。このものには 参照しているセルはありません。 ご回答の内容ですと、参照側のセルの変化を利用する策でしたが 大変に残念です。そこで思いついたのですが、この値をタイマー機能で 別セルに転記し、そのセルの変化を利用してチャレンジしようと思います。 試した結果はまた報告します。今回は本当にありがとうございました。

その他の回答 (1)

  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.2

NO1です。 .Dependentsを使用すると、Changeイベントで数式セルの変化を検出可能だそうです。 全ての条件が当てはまるわけではなさそうですが、下記を参照下さい。 http://veaba.keemoosoft.com/2012/12/233/

dORAGON2394
質問者

お礼

早速のご回答、本当にありがとうございます。 説明が不足で申し訳けありませんでした。 数式の内容の件ですが、この数式は楽天RSS関数で リアルタイムの株価を表示するための関数です。このものには 参照しているセルはありません。 ご回答の内容ですと、参照側のセルの変化を利用する策でしたが 大変に残念です。そこで思いついたのですが、この値をタイマー機能で 別セルに転記し、そのセルの変化を利用してチャレンジしようと思います。 試した結果はまた報告します。今回は本当にありがとうございました。

関連するQ&A

  • エクセルでセルをクリアされたら、自動的にセルの色を変更したい

    エクセルで、セルの値がDeleteキーなどでクリアされた場合に、 自動的にセルの色がかわるようにしたいのですが、 何かよい方法はないでしょうか? セルの内容が変更された場合のフォントの色を変えるために、 Private Sub Worksheet_Change(ByVal Target As Range) Target.Font.ColorIndex = 3 End Sub というマクロは設定しています。 これだとクリアされた場合、わからないので。。。 よろしくお願いします。

  • エクセルマクロのChangeイベント

    以前Changeイベントをこちらで教えて頂いたのですが、うまく使えず困っています。 Changeイベントの対象となるセルには値を検索するvlookup関数の数式が入力されていて、値が検索できたらコピーするというマクロをChangeイベントで実行しようとしているのですが、うまくいきません。 Changeイベントはセルの中の数式が変化しないと実行されないのでしょうか?数式の結果が変わっただけでは実行しませんか?教えて下さい。

  • EXCELでセルの値が変化したときだけにマクロ実行

    教えてください。 EXCELのA1セルの値が1→0に変化したときにMacro1を実行、0→1に変化したときにMacro2を実行したいと思い、以下のマクロを「シート名タブ右クリック」→「コードの表示」で開く画面に打ちました。 そうしたところキーボードからA1セルに1や0を打ち込むとMacro1・Macro2を実行するのですが。A1セルに関数式を入れ自動で1→0・0→1に変化してもMacro1・Macro2が実行されません。この場合どう修正すればMacroが実行されるようになりますか? ※ちなみにA1セルの関数式はある条件を満たしたら1、そうでない時0という式です。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" And Target.Value = 0 Then Macro1 End If If Target.Address = "$A$1" And Target.Value = 1 Then Macro2 End If End Sub

  • イベントマクロについて

    イベントマクロについて質問ですが まず、下記をご覧下さい。 過去にここで回答いただいたものを流用させてもらったものですが もうひとつ機能を追加したいと思います。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column >= 4 And Target.Column <= 34 Then If Target.Row >= 2 And Target.Row <= 100 Then Select Case Target Case "(5)GC" Target.Interior.ColorIndex = 34 Target.Font.ColorIndex = 0 Case "6OS", "6FC" Target.Interior.ColorIndex = 6 Target.Font.ColorIndex = 0 Case "(6)TA", "(6)C" Target.Interior.ColorIndex = 46 Target.Font.ColorIndex = 0 Case "6@BD", "6@C" Target.Interior.ColorIndex = 38 Target.Font.ColorIndex = 0 End Select End If End If End Sub 追加する機能とは、上記で指定した範囲以外のセルを参照して 色を付けるかどうかを区別するものです。 例えば、A2の値が色付けに該当する場合はD2からAH2の中で上記マクロに該当するセルに色を付け、もしA2が該当しない場合は色付けをしない というような感じです。 よろしくお願いします。

  • 【ExcelVBA】セルに入力された値によって書式を変更する

    こんにちは。いつもお世話になっております。 標題の件で質問させて下さい。 セルに入力された値によって塗りつぶす色を変えるマクロを作成しています。 条件付き書式では、条件を3つしか指定できなかったので、マクロにて制御しようと思いました。 値の判定を行い、入力した各文字列の色で塗りつぶされるところは正常に動作しているのですが、 値が入っていてもいなくても、複数のセルを選択し、「Delete」キーを押下すると、背景色がグレーになってしまうのです。 初歩的な質問で申し訳ありませんが、どなたか上記のような動作をする理由をご教授頂けないでしょうか。 以下にソースを載せておきます。 宜しくお願い致します。 --- Private Sub Worksheet_Change(ByVal target As Range) On Error Resume Next If (target.Cells.Value = "グレー") Then target.Cells.Interior.ColorIndex = 15 ElseIf (target.Cells.Value = "イエロー") Then target.Cells.Interior.ColorIndex = 6 ElseIf (target.Cells.Value = "スカイブルー") Then target.Cells.Interior.ColorIndex = 33 ElseIf (target.Cells.Value = "ピンク") Then target.Cells.Interior.ColorIndex = 7 Else target.Cells.Interior.ColorIndex = 0 End If End Sub

  • セル内で変化する値の最大値、最小値を抜きだす。

     初めまして、よろしくお願いします。  セル内でランダムに変化させる値の最大値と最小値を抜き出すマクロを教えていただきたいと思います。  セルD10からD20まで、セルおのおのランダムに変化させていきます。そのセルごとで、表示された最大値の値をF10からF20に、最小値をH10からH20へ抜き出していきたいと思います。 セルが変化した場合に実行する Private Sub Worksheet_Change(ByVal Target As Range) を使用し、FやHの数値と比べて、最大値、最小値の条件が合えばコピーして抜き出すやり方だと思います。他のやり方が有れば、他の方法でもかまいません。  他のセルには他のデーターが入っています。  当方初心者ですので、応用が利くように説明していただければありがたいと思います。(おのおの変化するセルがD10からD30へ範囲の拡大した場合の説明。位置がD列からE列、F列列からG列、H列からJ列へと変化した場合の説明、セルD10からD20まで、D列ですが、ランダムに変化するセルがI10からR10の行へ、同様に抜き出す最大値がI15からR15行へ、最小値がI18からR18へ、列から行へ、変化できるような説明)  解る方、よろしくお願いします。

  • シート内セルに着色があればエラーメッセージ

    Excelの入力ボタンをクリックしたときにシート1のセル"A1:D50"内にエラーで着色(ColorIndex =7)されたセルがあった場合、次のステップにいけないようにエラーメッセージ("日付が入力されていません")を表示したいのですがコード表示が解る方どうかよろしくお願いします。

  • エクセルVBAで条件付書式の色を取得

    セルに条件付書式で書式設定してあります。 A1は「値」100以下 A2は「値」500以下 A3は「値」1~10の間 B1は「数式」で=B1<A1 以下さまざまな数式があります。 条件に一致すると、セルの文字が「赤」になります。 このとき、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) MsgBox Target.Font.ColorIndex End Sub を実行しても、ColorIndexは、赤の「3」ではなく「-4105」と表示されます。 「-4105」は何もフォントの色を指定してないセルでも同じく表示されます。 質問1.条件付書式で、条件が一致して表示されたフォントの色は取得できないのでしょうか? 質問2.-4105とは何でしょうか?

  • Excelでセルの値を変化させた時にマクロを実行するには?

    "A1"のセルに値を入れるとマクロが実行するように組んだのですが、問題が発生しました。 Private Sub Worksheet_Change(ByVal Target As Range) If Target = Range("A1") Then      cells(1,2)=5      ・・・・ End If End Sub ここでA1に"5"を入力すると、B1に5と入力されるのですが、Target=5と認識してしまい、A1と同じ値になるので無限ループになってしまいます。 なにか回避策はないでしょうか? よろしくお願いします。

  • セルの値をワードアートに

    セルの値をワードアートに A1に入力した値をワードアートに反映させていますが、 A1の値を複数のワードアートに反映させる場合は下記のコードの 3行目を数分だけ入れないとダメでしょうか? Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Address <> "$A$1" Then Exit Sub  ActiveSheet.Shapes("WordArt 1").TextEffect.Text = Target.Value End Sub コピーしてワードアートオブジェクトの名前を一緒にしても 最初の1個しか反映されませんでした。 よろしくお願いします

専門家に質問してみよう