• ベストアンサー

【VBA】複数条件下での色付

お願いします。 (XP・エクセル2003) ※たとえばA列に『あ』『い』『う』『え』『お』の5種の文字のいづれかが1行目から100行目まで並んでいるとします。(空白セルはなく必ずいずれかの文字が入っている) (1)『あ』の文字のときにはそのセルの色を赤色、『い』ならば青、『う』ならば黄、『え』ならばピンク、『お』ならば茶、と色をかえるマクロを作りたいのですが、方法がわかりません。 (2)同じく、※の条件下で『あ』もしくは『い』のときにはセルの色をどちらも緑にかえる方法を条件付き書式でなく、マクロで作る必要があるのですが、方法がわかりません。 教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • don9don9
  • ベストアンサー率47% (299/624)
回答No.3

No.1です。 No.1のコードに一箇所間違いがありましたので訂正します。 >Case "う" >myColorl = 6 の部分ですが、正しくは myColor = 6 です。失礼しました。 さて >(1)と(2)はまったく別のシートで使用します。 >ぞれぞれで独立した形で作りたいのですが、 ということですが、私がNo.1に書いたコードを それぞれのワークシートオブジェクトに貼り付けて (シート名を右クリック→コードの表示→貼り付けが手っ取り早いです) 色付けの条件判定部分(No.1のコードの以下の部分) Select Case c.Value Case "あ", "い" myColor = 4 Case "う" myColor = 6 Case "え" myColor = 7 Case "お" myColor = 53 Case Else myColor = xlNone End Select Case の横、""で囲んである文字が「どの文字の場合」 myColor = で指定している数字が「付けたい色の色番号」です。 例えば Case "あ", "い" myColor = 4 の部分は 「文字が『あ』または『い』の場合、色番号4の色(緑)を付ける」 という意味です。 これをシートごとにカスタマイズすれば シートごとに別々の動作をさせることができます。 なお、どの色番号がどの色になるかはNo.1の参考URLをを参照して下さい。

mmm_
質問者

お礼

とってもわかりやすく教えてくださって、ありがとうございます。 なんとかお力を借りて解決できました! 本当に助かりました。 ありがとうございます!

その他の回答 (2)

  • Kotori_D
  • ベストアンサー率36% (54/149)
回答No.2

sub myColor() for i = 1 to 100 '1~100行目 worksheets("sheet1").cells(i, 1).select select case selection.value case "あ" '(1)の「あ」ならば・・・ with selection.interior .colorindex = 3 .pattern = xlsolid end with case "い","う" '(2)の「い」または「う」ならば・・・ with selection.interior .colorindex = 4 .pattern = xlsolid end with endselect next end sub for文とselect caseを組み合わせればできますよ。 がんばってくださいね~

mmm_
質問者

お礼

応援頂きありがとうございました。 皆さんのおかげでなんとか解決できました。 また勉強しなおします。 本当に感謝です!

mmm_
質問者

補足

説明不足ですみません!! (1)と(2)はまったく別のシートで使用します。 ぞれぞれで独立した形で作りたいのですが、 もしよろしければすべての構文をお教え願えないでしょうか? 自分で勉強したいのですが、このマクロを至急 業務内で使う予定がありまして・・・ 勝手言いましてすみませんが、 お知恵をお借りできれば助かります。

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.1

(1)と(2)を複合して 「あ」または「い」→緑 「う」→黄色 「え」→ピンク 「お」→茶色 それ以外→色なし としてみました。 適宜応用して改変して下さい。 Private Sub Worksheet_Change(ByVal Target As Range) Dim myColor As Variant Dim c As Range Dim myRng As Range Set myRng = Application.Intersect(Range("A:A"), Target) If myRng Is Nothing Then Exit Sub Application.EnableEvents = False For Each c In myRng Select Case c.Value Case "あ", "い" myColor = 4 Case "う" myColorl = 6 Case "え" myColor = 7 Case "お" myColor = 53 Case Else myColor = xlNone End Select c.Interior.ColorIndex = myColor Next c Application.EnableEvents = True End Sub

参考URL:
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_cell_color.html

関連するQ&A

専門家に質問してみよう