『セルに色を付けたい』(うなー)
初めまして。過去ログを見ててもわからなかったので初めてですがお伺いしたいです。
20シートあるうち10シートほど、同じ書式のエクセルがあるのですが
A3〜X20まで計算式が入ってます。
A3であれば=sum(A1:A2)のような形です。
この計算式に変更があった際にセルに色がつくようにしたいのですが方法はありますでしょうか。
変更するとしたら=sum(A1:A2)+1のように本来の計算式の後にプラスマイナスが入ります。
これはA3〜X20までどこで入るかわからないです。
あちこち見て条件付き書式で試みていましたがうまくいかないのでよろしくお願いいたします。
条件付き書式で無理であればマクロでも構いません。
よろしくお願いいたします。
*A3〜X20はわかりやすく書いただけで実際は違います。
必要でしたら正しいセルを記載します。
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
>計算式に変更があった際に これが謎です。各シート変更する可能性があるのであればどのシートが基準なのか示す必要があります 「変更」とは本来語義通りの意味で、「何かしら編集したら」という意味になり、 それをマクロで記述するのは非常に単純な話です。Changeイベントを発火させればいいだけですからね。すべてのシートモジュールに記述する必要はありますが。 Private Sub Worksheet_Change(ByVal Target As Range) Apllicaiton.EnableEvents=False If Not Intersect(Target,Range("A3:X20")) Is Nothing Then Target.Interior.Color=vbRed End If Application.EnableEvents=True End Sub
ただ、主旨は「基準となる数式があって、その基準とは異なる数式になる場合」ですよね?仰っているような「変更」を基準にしてしまうと、例えば2回変更した後に元の数式に戻った場合、それを「変更がない」と判定することはかなり難しいと思います。 総じて、基準を設定しないと厳しいです。例えば「10シートの内多数派は塗りつぶしなし」などは考えられそうですが、すべての関数についてすべてのシートを確認しカウントするような処理は大分厳しいかと。考えられる手法は、Openイベントでどこかしらのシートをコピーし基準として設定、BeforeCloseイベントですべてのシートと基準シートを精査、などでしょうか。 ( TKG) 2025/04/17(木) 11:46:14
Apllicaiton.EnableEvents = False の時点で「オブジェクトが必要です」と出てしまいました… 何もわかってなくてすみません。 (うなー) 2025/04/17(木) 11:56:27
タイプミスです。失礼いたしました。
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Not Intersect(Target, Range("A3:X20")) Is Nothing Then Target.Interior.Color = vbRed End If Application.EnableEvents = True End Sub
( TKG) 2025/04/17(木) 12:02:09
これは最低限のコードです。実際に運用するのであればブックを開くたびに 塗りつぶしを解除して初期化する必要があるかと思います。 実際にやりたいことが不明瞭なのでもしご希望であれば提示します。
( TKG) 2025/04/17(木) 12:06:58
>この計算式に変更があった際 変更されたかどうかを判定するのは難しいので、 基準となる式と違う場合に色をつければいいのではないかと思います。
実際につかっているシートとは別に、基準になるシートを用意して、 基準になるシートと式が違っているかどうかで判定してください。 条件付き書式を使って =FORMULATEXT(A1)<>FORMULATEXT(基準シート!A1) みたいな FORMULATEXT 関数は式じゃないとエラーになるので、もひと工夫いるかも
(´・ω・`) 2025/04/17(木) 12:39:11
解決されたようです。 メモしてしまったので、投稿しておきます。
目的は変更を抑止するためですか、それともご自分の記憶補助のためですか? ・前者なら、きちんと保護を掛けたほうがよいと思います。いくらでも塗りつぶしは消されてしまうので。 ・後者なら、変化しなくても同じものを再入力するだけでもChangeイベントプロシージャが起動して 色が付くことに注意してください。 (F2キーを押したあとでEnterキーを押すだけでも)
# なお、塗りつぶし色の変更ではChangeイベントは起きないので、 # Application.EnableEventsの操作は不要ではないかと思います。
# 私も条件付き書式案書いたのですが、使うシート名まで同じでした。光栄です!? (xyz) 2025/04/17(木) 15:06:41
xyz様、補足ありがとうございます。 完全に脳死で書いてました。笑 勉強になりました。 ( TKG) 2025/04/17(木) 15:18:20
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.