• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAの条件分岐を利用したセルの色分け)

VBAの条件分岐を利用したセルの色分け

このQ&Aのポイント
  • VBAを使用してセルの色分けを行いたい場合、セルに関数を入力することはできません。
  • VBAの条件分岐を利用してセルの色分けを行う場合、セルに直接数値を入力することで色分けが可能です。
  • しかし、他のデータシートの値を参照させたい場合、セルに関数を入力すると色分けが無効になってしまいます。

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.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 '----------------------------------------------- 以上ここまで。

aimo0314
質問者

お礼

ありがとうございました。 解決致しました。 的確なご回答に感謝致します。

その他の回答 (3)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

>セルA1に「=データシート!B1」と入力したら、セルの色は消えてしまった。 色が消えたのでは無く、参照先の値が色の設定範囲を超えたので無色に設定されただけでしょう。 100より大きいかマイナス値。 また、Worksheet_Changeイベントでは該当セルが書き換えられた時に動作するイベントです。 式の参照先の値が書き換わった場合は検知出来ないので、このマクロは動作しません。

aimo0314
質問者

お礼

回答頂きましてありがとうございました。

noname#110201
noname#110201
回答No.2

そうですねぇ、No1の方が書かれているように、これでは全然要領を得ません。 ただ、一度黄色になったセルの色が消えるのですから、そのコードはきちんと走っているのだと思います。 セルの色がなくなるか白になる場合があるのではないですか?

aimo0314
質問者

補足

すみませんでした。 コードは下記の通りとなります。 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)
回答No.1

コードくらいは提示しましょう。

関連するQ&A