• ベストアンサー

エクセルマクロ セルの色つけ

エクセルのマクロです。 条件で複数セルに色をつけたいのですが以下の方法しかないですか。 もっと多くのセルに一度に色を付ける良い方法がありましたら教えて下さい。 If days = "日" Then With Cells(i, 2).Interior .ColorIndex = 3 .Pattern = xlSolid End With With Cells(i, 13).Interior .ColorIndex = 3 .Pattern = xlSolid End With End If 以上 お願いします。

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.4

一例です 'B1~B10に"日"があればセルに色をつける Sub test1() Dim days As Range Range("b1:b10").Select  '←ここで範囲を指定 For Each days In Selection If days.Value = "日" Then With Cells(days.Row, 2).Interior .ColorIndex = 3 .Pattern = xlSolid End With With Cells(days.Row, 13).Interior .ColorIndex = 3 .Pattern = xlSolid End With End If Next days End Sub 'おまけ '範囲を選択し実行すると"日"のあるセルに色が付きます Sub test2() Dim days As Range For Each days In Selection If days.Value = "日" Then With days.Interior .ColorIndex = 3 .Pattern = xlSolid End With End If Next days End Sub 色々応用してみて

homma
質問者

お礼

回答ありがとうございました。 大変勉強になります。 いろいろ試してみます。

その他の回答 (5)

  • diashun
  • ベストアンサー率38% (94/244)
回答No.6

#5 diashun です。 色づけなので、以下の通りコードを修正してください。 'ここからコピー************************ Sub 一括色づけ() Dim Wb, Sh Set Wb = ThisWorkbook Set Sh = Wb.Worksheets("Sheet1") ' Sh.Range("tmp") = "A" With Range("tmp").Interior .ColorIndex = 3 .Pattern = xlSolid End With Set Wb = Nothing Set Sh = Nothing End Sub 'ここまでコピー************************

homma
質問者

お礼

回答ありがとうございます。 何度もすみません試しています。 本当ありがとうございました。

  • diashun
  • ベストアンサー率38% (94/244)
回答No.5

指定するセル範囲(連続範囲、離れた範囲)に名前を付けて一挙に設定できます。 方法1.Ctrlキーを押しながら、複数の範囲(セル個別、連続範囲など)を選択します。2.セルの名前ボックスに範囲の名前(ここでは「tmp」)を付けます。 3.以下のVBAコードをモジュールに記述します。 'ここからコピー****** Sub 一括入力() Dim Wb, Sh Set Wb = ThisWorkbook Set Sh = Wb.Worksheets("Sheet1") Sh.Range("tmp") = "A" 'ここに適当な処理を追加記述してください。 Set Wb = Nothing Set Sh = Nothing End Sub 'ここからコピー****** わかりにくければ、補足でお知らせください。

homma
質問者

お礼

回答ありがとうございます。 いろいろなやり方が勉強できて大変役に立っています。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

やりたいことを「言葉で」説明してください。 >If days = "日" Then なんて考える場合はどんな場合か。初心者がコードだけ書いて質問する欠点はその辺にあります。 例のコードはどんなことをしたい一端か。 iを使っているが、ループの中かと思うが、ループの体もなしてない。For Nextなどもきっちり書くように。 ーー ニーズを推測すると 書式ー条件付き書式ー数式が、または値が、で操作を行い、マクロの記録をとれば質問者の考えるようなことができるのでは。 2003までは3条件。2007は増えているようだ。その点にニーズ(この点ポピュラーな点なので)があるのか、質問に明記すべきだ。

homma
質問者

お礼

回答ありがとうございます。質問が分かりづらくてすみませでした。 使っているエクセルは2007です。 いろいろと勉強してみます。

  • kaz5919
  • ベストアンサー率25% (4/16)
回答No.2

その色をつけるセルが決まっているのであれば Range("E12,D9,B10,B19,E17,G12,F4,C3").Select With Selection.Interior .ColorIndex = 6 .Pattern = xlSolid End With のようにすれば可能ですが 決まってないのであれば1つ1つ設定するしか思いつきません。

homma
質問者

お礼

回答ありがとうございます。質問が分かりずらくてすみません。 色付けしたいセルは条件によって変わるのでサブルーチン化が必要なのかも知れません。

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

With Cells(i, j).Interior .ColorIndex = 3 .Pattern = xlSolid End With をサブルーチンにする。

homma
質問者

お礼

回答ありがとうございます。(i,i)の二つ目を別変数でループにすれば目的の色ずけができそうです。