プロが教えるわが家の防犯対策術!

使用環境:Office2003

条件付書式を使用して、セルの値がxxならばセルを着色する・フォントを変える、というのは可能ですが、

逆に

セルの色がxx(例えば赤等)ならば、隣のセルに1を代入する

ということは可能でしょうか?
※VBAを使わなければそれにこしたことはないですが、
 必要ならばコーディングも教えてください

よろしくお願いします。

A 回答 (4件)

過去の質問を検索していただくと、たくさんの事例がありますが、結論から言うと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
で強制再計算させる必要があります。
    • good
    • 9
この回答へのお礼

自宅にはOffice2003の環境がないため、コメントが遅くなりましたことまずお詫び申し上げます。

確かに、もう少し具体的な質問をしないとサンプルコードも書けないかもしれませんね。
しかし、zap35さんのご回答、参考になりました。
強制再計算はボタンクリックに変更し、ほぼ目的にあった動作をさせることができました。

ありがとうございました!

お礼日時:2007/08/13 11:47

何の理由もなしに色をつけているとは思えませんので、


その理由付けになっている条件を取得できないでしょうか。
また、そのように仕組むべきです。
ご質問の内容だと、
「セルの色が赤ならば、隣のセルに1を代入する」ではなく、
「隣のセルが1なら、セルの色を赤にする」というアプローチに変更します。

エクセルの関数は他のセルをどうこうする機能はありません。
「隣のセルに1を代入する」という考え方ではなく、「他のセルの内容によって『1』になるような数式をセットしておく」という考え方です。
    • good
    • 2
この回答へのお礼

自宅にはOffice2003の環境がないため、コメントが遅くなりましたことまずお詫び申し上げます。

おっしゃることはわかります。
ただ、今回は既にある特定のセルが着色されたデータをもらい、
それに対して集計を行うのが任務だったので。

お礼日時:2007/08/13 11:50

参考にして下さい


http://okwave.jp/qa3233066.html
    • good
    • 1
この回答へのお礼

自宅にはOffice2003の環境がないため、コメントが遅くなりましたことまずお詫び申し上げます。

ありがとうございます。こういうやり方もあるんですね。
しかし、ちょっと私にはソースが高度かな?って感じですが、
今後のためにも勉強になります。

お礼日時:2007/08/13 11:48

私も先ほど同じ問題でハマりました。



最初のセルをA1、隣のセルをB1として、
・A1: A1の値が0より大きければA1の色を赤にする(条件付き書式)
・B1: A1の値が0より大きければB1に1を表示する
・A1に1を入れる

私はこの方法で妥協することにしました。

この回答への補足

自宅にはOffice2003の環境がないため、コメントが遅くなりましたことまずお詫び申し上げます。

で、ご回答いただいたないようですが、
私と目的が異なっているように思えるのですが、それは私の理解力が不足しているだけでしょうか?
すみませんが、追記いただけると助かります。

補足日時:2007/08/13 11:43
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A