- ベストアンサー
VBA入門者です。色々考えたのですが、自分のレベルではどうしても判らな
VBA入門者です。色々考えたのですが、自分のレベルではどうしても判らないので、 この場を借りて質問させていただきます。 例えば、A1からC10の表に適当な数値が入っていたとします。E列でE1から順に数値を入れていき、その数値が表にあれば、その部分のセルに色がつくようにしたいのですが、VBAではどのように式を組めばよいのでしょうか? 条件付き書式ではできたのですが、色をつける場合が4つ以上になるので、VBAで作りたいと思っています。 どなたかにご教示頂ければ幸いです。よろしくお願いします。
- みんなの回答 (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
その他の回答 (2)
- p-211
- ベストアンサー率14% (24/170)
補足: .Valueは”値” だけど セルの場合表示されているものと.Valueは必ずしも同じではないので注意! 特に小数以下を含むものだったり日付なんかは・・ その場合.Textにしたほうがいい
- p-211
- ベストアンサー率14% (24/170)
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 これをどのイベントでやるかってことだけど・・
お礼
とても参考になりました。 この式を使って色々と応用してみたいと思います。 ありがとうございました!
お礼
とても参考になりましR。 早速使わせて頂きました。 ありがとうございました!