• ベストアンサー

VBA入門者です。色々考えたのですが、自分のレベルではどうしても判らな

VBA入門者です。色々考えたのですが、自分のレベルではどうしても判らないので、 この場を借りて質問させていただきます。 例えば、A1からC10の表に適当な数値が入っていたとします。E列でE1から順に数値を入れていき、その数値が表にあれば、その部分のセルに色がつくようにしたいのですが、VBAではどのように式を組めばよいのでしょうか? 条件付き書式ではできたのですが、色をつける場合が4つ以上になるので、VBAで作りたいと思っています。 どなたかにご教示頂ければ幸いです。よろしくお願いします。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

>E列でE1から順に数値を入れていき、その数値が表にあれば、 Changeイベントを使えば良いでしょう シートモジュールに貼り付けてお試し下さい Private Sub Worksheet_Change(ByVal Target As Range)   Dim myRang As Range   Dim myColor As Long   With Target     '入力したセルが複数ならExit     If .Count > 1 Then Exit Sub     '入力セルがE列以外はExit     If .Column <> 5 Then Exit Sub     'Range("A1:C10")範囲に入力した値を検索     Set myRang = Range("A1:C10").Find(What:=.Value, LookIn:=xlValues, LookAt:=xlWhole)     '検索値が無ければExit     If myRang Is Nothing Then Exit Sub     '検索値があれば     Select Case myRang.Row       '1~2行に有れば赤色       Case 1 To 2: myColor = 3       '3~4行に有れば青色       Case 3 To 4: myColor = 5       '5~6行に有れば緑色       Case 5 To 6: myColor = 10       '7~8行に有れば黄色       Case 7 To 8: myColor = 6       '9~10行に有れば水色       Case 8 To 10: myColor = 8     End Select     .Interior.ColorIndex = myColor   End With End Sub

ngayan
質問者

お礼

とても参考になりましR。 早速使わせて頂きました。 ありがとうございました!

その他の回答 (2)

  • p-211
  • ベストアンサー率14% (24/170)
回答No.2

補足: .Valueは”値” だけど セルの場合表示されているものと.Valueは必ずしも同じではないので注意! 特に小数以下を含むものだったり日付なんかは・・ その場合.Textにしたほうがいい

  • p-211
  • ベストアンサー率14% (24/170)
回答No.1

Dim c As Range For Each C In Range("a1:a10") If ActiveCell.Value=C.Value Then ActiveCell.Interior.ColorIndex = 6 ← 黄色は6  End If Nwxt これをどのイベントでやるかってことだけど・・

ngayan
質問者

お礼

とても参考になりました。 この式を使って色々と応用してみたいと思います。 ありがとうございました!