プロが教える店舗&オフィスのセキュリティ対策術

エクセルで、セルの値がDeleteキーなどでクリアされた場合に、
自動的にセルの色がかわるようにしたいのですが、
何かよい方法はないでしょうか?

セルの内容が変更された場合のフォントの色を変えるために、

Private Sub Worksheet_Change(ByVal Target As Range)
Target.Font.ColorIndex = 3
End Sub

というマクロは設定しています。
これだとクリアされた場合、わからないので。。。

よろしくお願いします。

A 回答 (5件)

空白セルの表示だけでよいのであれば、「条件付き書式」を使ってはいかがでしょうか。



クリアされたときに色を変えたいセルを選択して、「書式」→「条件付き書式」を選択します。
「セルの値が」「次の値に等しい」「=""」として「書式」ボタンを押し、「パターン」のタグで好きな色を選んで「OK」を押します。

それで、「OK」とすれば、空白セルのみ色塗りされます。
    • good
    • 0
この回答へのお礼

早々のご回答ありがとうございます。

みなさんに教えていただいた方法でやってみたんですが、
条件付き書式では、もともと空白のセルにも色がついてしまい、
どのセルがクリアされたかわからない状態です。
自分だけで使用するなら都度塗りつぶし設定等をすればいいのですが、
ほかの方も使用するので、自動でなんとかできないかと。。。

難しいですね。。。

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

条件付き書式で


=isblank(a1)
のように設定するのはいかがでしょうか。

ただこれでは「クリアされた場合」ではなく、「空白セルの場合」になってしまいますが・・・。
    • good
    • 0
この回答へのお礼

早々のご回答ありがとうございます。

条件付き書式では、もともと空白のセルにも色がついてしまい、
うまくいかない状態です。

お礼日時:2007/10/11 13:11

書式→条件付き書式で



「セルの値が」「次の値に等しい」「0」

ってやって、書式→パターンで背景色変えておけば、マクロ使わなくてもご要望どおりになると思いますが、だめでしょうか。
    • good
    • 0
この回答へのお礼

早々のご回答ありがとうございます。

条件付き書式では、うまくいかないんです。。。

お礼日時:2007/10/11 13:12

IFで条件分岐させてあげればいいのではないでしょうか。


セルが変更された場合、値が""ならばカラーを0、そうでなければ3というように。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target <> "" Then
Target.Font.ColorIndex = 3
Else
Target.Font.ColorIndex = 0
End If
End Sub

マクロを使わずに、条件付書式を使ったほうがより確実だと思いますが…。
    • good
    • 0
この回答へのお礼

早々のご回答ありがとうございます。

試してみたんですが、元の表に問題があるのか
うまくできませんでした。。。

お礼日時:2007/10/11 13:20

表設計を終った段階で空白セルは1スペースを入れておく。


(編集ージャンプーセル選択ー空白セルースペースーCTRL+ENTER)
書式
条件付書式
式が
=A!=""
書式でセルのパターンにピンクとか設定
Ok
データを入れて、その後DELで空白にすると色が現れる。
スペースーデータ入力ーDEL-空白ー着色のステップ。
ーー
VBAでは
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = "" Then
Target.Interior.ColorIndex = 3
Else
Target.Interior.ColorIndex = 0
End If
End Sub
で普通の操作なら近いところまで行くようだが、不都合箇所はあるかな。
表全体に別の意味からの何か色設定があると困るが。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

なるほど!
はじめにスペースをいれた上で、条件付き書式にすればいいんですね!
うまくできました。

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

お礼日時:2007/10/11 13:28

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