- ベストアンサー
エクセルVBAで、ある範囲のデータのある行に対して一行おきに色を付けたい
B3:E3以下の行で一行おきに、C列に文字でも数字でも入力がある場合 その行全体(B:E)を色づけしていきたいのですが、どうすればいいでし ょうか。一般機能の条件付書式でのマクロ記録をとってみましたが、 知識が乏しくどうしたらいいか分かりませんでした。 教えてください。よろしくお願いします。 Sub Macro1() Selection.FormatConditions.Delete Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$C$3<>""""" Selection.FormatConditions(1).Interior.ColorIndex = 3 End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#01です。そうでしたか、すみません。 条件付き書式をコピーする方法 Sub Macro2() With ActiveSheet.Range("B3") .Select .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:= _ "=COUNTA($C3)+MOD(ROW(),2)>1" .FormatConditions(1).Interior.ColorIndex = 3 .Copy End With Range("B3:E" & Range("B63556").End(xlUp).Row).Select Selection.PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False End Sub セルの背景色を直接塗る方法 Sub Macro3() Dim idx, LastR As Long LastR = Range("B65536").End(xlUp).Row For idx = 3 To LastR If Cells(idx, 3) <> "" And (Cells(idx, 3).Row Mod 2) = 1 Then Range(Cells(idx, "B"), Cells(idx, "E")).Interior.ColorIndex = 3 Else Range(Cells(idx, "B"), Cells(idx, "E")).Interior.ColorIndex = xlNone End If Next idx End Sub どちらもデータの終了判定はB列で行っています
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 >勉強でマクロでやってみようとしているところです。躓いていてお聞きしたかったのです。 ちょっとおせっかいかもしれませんが、条件付書式は、あまりマクロにすることがありません。それは、それ自身が、動的な変化を持っているからです。 また、うまく行かないのは、「知識が乏しい」のではなく、初級レベルとしては、かなり難問だからです。たったこの程度と思うかもしれませんが、1年ぐらい経っても、てこずるはずです。 Rangeオブジェクトの扱いは、とてもややこしいです。なれるまでには、相当の時間が掛かります。絶対参照と相対参照など、ワークシートの知識も必要になってきます。出来れば、こういうレベルは、後回しにして、通常の書式で、ループを使ってセルに色を塗るマクロをお勧めします。たぶん、マクロの教本でも、このレベルは出てこないと思います。 Sub Macro2() Dim rng As Range Set rng = Range("B3", Range("B65536").End(xlUp)) rng.Resize(, 2).FormatConditions.Delete With rng .FormatConditions.Add Type:=xlExpression, Formula1:="=MOD(ROW(),2)=0" '=1 にすると、もう片方の行になります。 .FormatConditions(1).Interior.ColorIndex = 3 .Offset(, 1).FormatConditions.Add Type:=xlExpression, Formula1:="=C3<>""""" .Offset(, 1).FormatConditions(1).Interior.ColorIndex = 3 End With Set rng = Nothing End Sub
お礼
貴重なアドバイスありがとうございました。 遠い道のりですが、マイルストーンができた 感じです。
- zap35
- ベストアンサー率44% (1383/3079)
マクロが詳しくないなら条件付き書式を使われたらどうですか 条件は「奇数行」でかつ「C列に値がある」ならその行のB:Eに背景色をつけるで良いですか B3を選択して「書式」→「条件付き書式」を選択します 「セルの値が」を「数式が」に変更し、式に以下を貼り付けます。 =COUNTA($C3)+MOD(ROW(),2)>1 「書式」ボタンで「パターン」→「背景色を指定」します。 B3をコピーしてC3:E3に「編集」→「形式を選択して貼り付け」→「書式」で貼り付けます。下方向にも「書式」だけコピー&貼り付けてください
お礼
ありがとうございます。条件付書式で一行おきに色づけは 知っていますが、勉強でマクロでやってみようとしている ところです。躓いていてお聞きしたかったのです。 ありがとうございます。
お礼
おつきあいありがとうございました。うまくできました。 いろいろな方法がありおどろきました。 これからが勉強です。