重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

条件つき書式のマクロを教えてください。
任意の選択したセルの右端列に数字を入力しています。
その数字が奇数だったら、数字の入力してある任意の列は除いて、行の色付けをしたいのです。
選択するセル範囲と数字の入っているセルの列はシート毎、ブック毎に、変わりますので、マクロで設定をしたいと思っています。エクセル2010を使っています。
よろしくお願いします。

A 回答 (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


あなたが具体的にどういう具合にエクセルを操作した時にどうなって欲しいのか、目に見える説明が足りてないと言っています。
後出しの説明で実は実はとダラダラ引っ張られるのはやめてほしい、ということです。
    • good
    • 0
この回答へのお礼

未熟な質問に回答を有難うございました。反省しております。
どこでも条件つき書式が実行できてうれしいです。
ご指導を頂けて、感謝です。有難うございました。

お礼日時:2013/04/22 06:37

>任意の選択したセルの



イミフメイなのでスルーします。
とりあえず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")のところをどのようにすればよいでしょうか。
ご指導いただければ幸いです。

補足日時:2013/04/21 22:32
    • good
    • 0

No.1です。


補足に
>選択した範囲の右端列の数値が変わった場合
とありますが、
あくまで範囲指定 → マクロ実行 という手順です。

「数値が変わる」というコトは一旦範囲指定を解いてしまう訳ですよね?
すなわちもう一度範囲指定した後にマクロを実行する必要があります。

数値が変わるたびに色変更したい場合は条件付き書式を設定しないと無理だと思います。
ご質問の大前提がSheetごとに範囲が違うというコトでしたので、前回のようなコードにしてみました。

それがダメなら根本的に考え直さないとダメだと思います。
この程度でごめんなさいね。m(_ _)m

この回答への補足

質問の仕方が言葉足らずで申し訳ありません。
有難うございました。

補足日時:2013/04/21 21:47
    • good
    • 0

こんばんは!


>任意の選択したセルの右端列に数字を入力しています
の部分は
>選択した範囲の右端列に数値が入っている
というコトにしての一例です。

標準モジュールに↓のコードをコピー&ペーストし、範囲指定したのちにマクロを実行してみてください。

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

この回答への補足

回答を有難うございます。
色付けはうまくいきましたが、選択した範囲の右端列の数値が変わった場合、例えば、空白になった時、偶数になった時に行の色をつけないようにしたいのですが、その場合はどうすればよいでしょうか?
お手数ですが、よろしくお願いします。

補足日時:2013/04/21 21:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!