質問: 【excel】 セルの色での判断はできますか? 使用環境:office2003 条件付書式を使用して、セルの値がxxならばセルを着色する・フォントを変える、というのは可能ですが、 逆に セルの色がxx(例えば赤等)ならば、隣のセルに1を代入する ということは可能でしょうか? ※vbaを使わなければそれにこしたことはないですが、 必要ならばコーディングも教えてください よろしくお願いします。
回答: 過去の質問を検索していただくと、たくさんの事例がありますが、結論から言うとvbaを使用しないとセルの色は取得できません >セルの色がxx(例えば赤等)ならば、隣のセルに1を代入する vbaを使用すればもちろんできますが、これは「例えば」の質問であって、このコードを書いても意味はないのでは? ですから汎用的に使えるユーザ定義関数にしました。以下のマクロをalt+f11でvbe画面を開き、左上のvba projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。 ワークシート画面に戻って、適当なセルに =cellcolor(a1) と入力してみて下さい。a1セルの色番号が表示されます。(背景色なしの場合は0が返ります) この戻り値判定して、関数などでセルに値をセットすればよいでしょう function cellcolor(byval rng as range) with rng.cells(1, 1).interior if .colorindex = xlnone then cellcolor = 0 else cellcolor = .colorindex end if end with end function ただしセルの背景色を後から変えても、ユーザ定義関数の戻り値は自動的には変わりません。式を入力した後で背景色を変更した場合は alt+ctlr+f9 で強制再計算させる必要があります。