- ベストアンサー
VBAの条件分岐を利用したセルの色分け
- VBAを使用してセルの色分けを行いたい場合、セルに関数を入力することはできません。
- VBAの条件分岐を利用してセルの色分けを行う場合、セルに直接数値を入力することで色分けが可能です。
- しかし、他のデータシートの値を参照させたい場合、セルに関数を入力すると色分けが無効になってしまいます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
提示の式では > If Target.Column <> 3 Then Exit Sub と、C列に入力されたら、としているわけですから、 >セルA1に数値「50」を入力したら、セルの色は「黄」になった。 このようになるわけはありえません。 勘違いしてませんか? ま、これはタイプミスであろうと推測できますから、置いといて。 既出の回答にもあるように、 セルに入れた式の結果で、セルの値が変化したも Changeイベントは発生しません。 よって、このChangeイベントは、Sheet1ではなくて 参照されているセルのあるSheetのイベントでないといけません。 Sheet1のA列(例えば、A1~)に A1 =Sheet2!B1 A2 =Sheet2!B2 A3 =Sheet2!B3 以下適当な行まで 上記の式が入っているとした場合 Sheet2のB列に入力があったら(Sheet2のChangeイベント) Sheet1のA列を塗りつぶす、というコードになります。 よって以下をSheet2にコピペして実行 '-------Sheet2 のchangeイベント ---------------- Private Sub Worksheet_Change(ByVal target As Range) Dim myColor As Integer If target.Count > 1 Then Exit Sub If target.Column <> 2 Then Exit Sub '●B列 Select Case target.Value Case 0 To 19 myColor = 3 '赤色 Case 20 To 39 myColor = 45 'オレンジ色 Case 40 To 59 myColor = 6 '黄色 Case 60 To 79 myColor = 4 '緑色 Case 80 To 100 myColor = 5 '青色 Case Else myColor = xlNone End Select Sheets("Sheet1").Cells(Target.Row, "A").Interior.ColorIndex = myColor End Sub '----------------------------------------------- 以上ここまで。
その他の回答 (3)
- hana-hana3
- ベストアンサー率31% (4940/15541)
>セルA1に「=データシート!B1」と入力したら、セルの色は消えてしまった。 色が消えたのでは無く、参照先の値が色の設定範囲を超えたので無色に設定されただけでしょう。 100より大きいかマイナス値。 また、Worksheet_Changeイベントでは該当セルが書き換えられた時に動作するイベントです。 式の参照先の値が書き換わった場合は検知出来ないので、このマクロは動作しません。
お礼
回答頂きましてありがとうございました。
そうですねぇ、No1の方が書かれているように、これでは全然要領を得ません。 ただ、一度黄色になったセルの色が消えるのですから、そのコードはきちんと走っているのだと思います。 セルの色がなくなるか白になる場合があるのではないですか?
補足
すみませんでした。 コードは下記の通りとなります。 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim myColor As Integer If Target.Count > 1 Then Exit Sub If Target.Column <> 3 Then Exit Sub Select Case Target.Value Case 0 To 19 myColor = 3 '赤色 Case 20 To 39 myColor = 45 'オレンジ色 Case 40 To 59 myColor = 6 '黄色 Case 60 To 79 myColor = 4 '緑色 Case 80 To 100 myColor = 5 '青色 Case Else myColor = xlNone End Select Target.Interior.ColorIndex = myColor End Sub よろしくお願いいたします。
- hana-hana3
- ベストアンサー率31% (4940/15541)
コードくらいは提示しましょう。
お礼
ありがとうございました。 解決致しました。 的確なご回答に感謝致します。