- ベストアンサー
値が奇数の時、任意のセル範囲の行の色付けマクロを
条件つき書式のマクロを教えてください。 任意の選択したセルの右端列に数字を入力しています。 その数字が奇数だったら、数字の入力してある任意の列は除いて、行の色付けをしたいのです。 選択するセル範囲と数字の入っているセルの列はシート毎、ブック毎に、変わりますので、マクロで設定をしたいと思っています。エクセル2010を使っています。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
結局説明がありませんが、選択範囲だけをヤリタイと言いたいのですか? sub macro2() dim h as range set h = selection(selection.columns.count) if selection.areas.count > 1 then exit sub if selection.columns.count =1 then exit sub with selection with .resize(.rows.count, .columns.count - 1).formatconditions.add _ (type:=xlexpression, formula1:="=MOD(" & h.address(false,true) & ",2)=1") .interior.patterncolorindex = xlautomatic .interior.color = 65535 end with end with end sub あなたが具体的にどういう具合にエクセルを操作した時にどうなって欲しいのか、目に見える説明が足りてないと言っています。 後出しの説明で実は実はとダラダラ引っ張られるのはやめてほしい、ということです。
その他の回答 (3)
- keithin
- ベストアンサー率66% (5278/7941)
>任意の選択したセルの イミフメイなのでスルーします。 とりあえず1行目から何某か記入してあって、右端列に数字があることにします。 あなたが明示的に選択したセル範囲だけに作用させたいと言いたかったなら、適宜応用してください。 sub macro1() dim h as range set h = range("IV1").end(xltoleft) if h.column = 1 then exit sub with range(range("A1"), h.offset(0, -1)).entirecolumn.formatconditions.add _ (type:=xlexpression, formula1:="=MOD(" & h.address(false,true) & ",2)=1") .interior.patterncolorindex = xlautomatic .interior.color = 65535 end with end sub
補足
回答を有難うございました。 シートを方眼用紙スタイルにしていますので、セレクトした範囲が変わります。 その場合はrange("A1")のところをどのようにすればよいでしょうか。 ご指導いただければ幸いです。
- tom04
- ベストアンサー率49% (2537/5117)
No.1です。 補足に >選択した範囲の右端列の数値が変わった場合 とありますが、 あくまで範囲指定 → マクロ実行 という手順です。 「数値が変わる」というコトは一旦範囲指定を解いてしまう訳ですよね? すなわちもう一度範囲指定した後にマクロを実行する必要があります。 数値が変わるたびに色変更したい場合は条件付き書式を設定しないと無理だと思います。 ご質問の大前提がSheetごとに範囲が違うというコトでしたので、前回のようなコードにしてみました。 それがダメなら根本的に考え直さないとダメだと思います。 この程度でごめんなさいね。m(_ _)m
補足
質問の仕方が言葉足らずで申し訳ありません。 有難うございました。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! >任意の選択したセルの右端列に数字を入力しています の部分は >選択した範囲の右端列に数値が入っている というコトにしての一例です。 標準モジュールに↓のコードをコピー&ペーストし、範囲指定したのちにマクロを実行してみてください。 Sub 色付け() Dim i As Long, j As Long ActiveSheet.Cells.Interior.ColorIndex = xlNone j = Selection(Selection.Count).Column If Selection(1).Column < j Then For i = Selection(1).Row To Selection(Selection.Count).Row If Cells(i, j) Mod 2 = 1 Then Range(Cells(i, Selection(1).Column), Cells(i, j - 1)).Interior.ColorIndex = 36 '←薄い黄色にしています End If Next i Else MsgBox "複数列を範囲指定してください" End If End Sub ※ 条件付き書式が設定してあると色は変わりませんので、条件付き書式は設定しないでください。 こんな感じでよいのでしょうか?m(_ _)m
補足
回答を有難うございます。 色付けはうまくいきましたが、選択した範囲の右端列の数値が変わった場合、例えば、空白になった時、偶数になった時に行の色をつけないようにしたいのですが、その場合はどうすればよいでしょうか? お手数ですが、よろしくお願いします。
お礼
未熟な質問に回答を有難うございました。反省しております。 どこでも条件つき書式が実行できてうれしいです。 ご指導を頂けて、感謝です。有難うございました。