[[20250417105748]] 『セルに色を付けたい』(うなー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『セルに色を付けたい』(うなー)

初めまして。過去ログを見ててもわからなかったので初めてですがお伺いしたいです。
20シートあるうち10シートほど、同じ書式のエクセルがあるのですが
A3〜X20まで計算式が入ってます。
A3であれば=sum(A1:A2)のような形です。
この計算式に変更があった際にセルに色がつくようにしたいのですが方法はありますでしょうか。
変更するとしたら=sum(A1:A2)+1のように本来の計算式の後にプラスマイナスが入ります。
これはA3〜X20までどこで入るかわからないです。
あちこち見て条件付き書式で試みていましたがうまくいかないのでよろしくお願いいたします。
条件付き書式で無理であればマクロでも構いません。
よろしくお願いいたします。

*A3〜X20はわかりやすく書いただけで実際は違います。
必要でしたら正しいセルを記載します。

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


すみません追加です。
同じ書式の入ったシートがありますが上記要望はシートの連動はありません。
同じ作業を10シート繰り返し、必要があれば本来の数式に+-を入れる作業をし、それぞれ数式に変更があればそこだけ色がつくようにしたいです。
ただ条件付き書式であればそれぞれのシートで同じ条件を入れると思いますがマクロだと影響が出るか不明で記載しております。
(うなー) 2025/04/17(木) 11:18:55

 >計算式に変更があった際に
 これが謎です。各シート変更する可能性があるのであればどのシートが基準なのか示す必要があります
 「変更」とは本来語義通りの意味で、「何かしら編集したら」という意味になり、
 それをマクロで記述するのは非常に単純な話です。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

TKGさん
早速のアドバイスありがとうございます。
数式の変更はないのが多数ですが変更をした瞬間に色がついてどこのセルが変更がかかったのか最終的に目視でわかればと思ってます。
This Workbookのモジュールではだめかな?とかいろいろ考えたのですがいかんせん素人で…
上記コードはをシートモジュールに張り付けてみましたが
 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


TKGさん、(´・ω・`)さんありがとうございます。
いただいたアドバイスをもとにやりくりしてみます。
TKGさんのコードは勉強になりました。
(´・ω・`)のアドバイスで違う見方ができることがわかりました。
どうにもならなくなったらまたご相談させてください。
すごく助かりました。
ありがとうございました。
(うなー) 2025/04/17(木) 13:07:22

 解決されたようです。  メモしてしまったので、投稿しておきます。

 目的は変更を抑止するためですか、それともご自分の記憶補助のためですか?
 ・前者なら、きちんと保護を掛けたほうがよいと思います。いくらでも塗りつぶしは消されてしまうので。
 ・後者なら、変化しなくても同じものを再入力するだけでも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.