[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロで塗りつぶし』(のの2)
WIN…XP EXCEL…2003 いつもお世話になっております。 塗りつぶしをするマクロで教えていただけないでしょうか。
A 〜 Q までデータが入っています。M列には作成日が入っています。 A B C D E F G H I J K L M N O P Q 有・無 作成日 有・無 そこで… 【現状】 1.条件付書式でB列に文字が入力されるとA〜Q列までセルに枠線がつく 2.L列が「有*」だったら A〜Q列を 紫色で塗りつぶし(手動) 3.P列が「無し」なら M列 を黄色で塗りつぶし(手動) 4.M列の日付が「今日」の1ヶ月前になったらM列をオレンジで塗りつぶし(手動) 5.M列の日付が「今日」の翌日からはM列をグレーで塗りつぶし(手動) 以上のように、それぞれのセルを塗りつぶしています。
これを…手作業ではなくマクロで出来たら…と思うのです。 そこで、過去ログを色々みていて下記のコードを見つけました。
Private Sub Worksheet_Change(ByVal Target As Range) '変数宣言 Dim colr As Integer Dim c As Variant If Target.Count > 1 Then Exit Sub If Target.Column <> 1 Then Exit Sub For Each c In Target Select Case c.Value Case "さる" colr = 3 'ここの色番号をお好きなように Case "くま" colr = 5 '々 Case "とり" colr = 6 '々 Case "いぬ" colr = 4 '々 Case "ねこ" colr = 8 '々 Case "あゆ" colr = 7 '々 Case Else colr = xlNone End Select c.Interior.ColorIndex = colr Next c End Sub
このコードの場合は、A列に「くま」と入力されるとA列に5番の色がつきますが A列の条件があったらA列の色が変わる…のではなく、現状手作業でやっているように P列が「無し」ならM列が黄色になる場合や、日付によって条件が変わる場合は どうしたらいいでしょう。
宜しくお願い致します。
>2.L列が「有*」だったら A〜Q列を 紫色で塗りつぶし(手動) >3.P列が「無し」なら M列 を黄色で塗りつぶし(手動) 有・無とは入力するの?入力規則のリスト選択?
条件付き書式は3つの条件を全て使い切っているの? (じゅんじゅん)
(じゅんじゅん)さん
>有・無とは入力するの?入力規則のリスト選択? 有・無は手入力です。入力規則は使用していません。
>条件付き書式は3つの条件を全て使い切っているの? 罫線を引く分のみです。
ふたつのシートをひとつにまとめようと思っていて、前のシートでは手入力だった書式を 条件を入力したら自動的に変わるようにできたら…と思っている次第です。 (のの2)
1.条件付書式でB列に文字が入力されるとA〜Q列までセルに枠線がつく 4.M列の日付が「今日」の1ヶ月前になったらM列をオレンジで塗りつぶし(手動) 5.M列の日付が「今日」の翌日からはM列をグレーで塗りつぶし(手動)
条件付き書式 (範囲はM1〜M??とした場合) 条件1) 従来のもの 条件2) 「数式が」 =AND(B1<>"",(M1-TODAY())<31) と入力 書式は 枠線と オレンジの塗りつぶし 条件3) 「数式が」 =AND(B1<>"",M1<TODAY()) と入力 書式は 枠線と グレーの塗り潰し
2.L列が「有*」だったら A〜Q列を 紫色で塗りつぶし(手動) 3.P列が「無し」なら M列 を黄色で塗りつぶし(手動) これもM列を塗りつぶすけど、優先順位は? (じゅんじゅん)
(じゅんじゅん)さん
L列の「有*」と他の条件が重なる場合は、 A〜Q列を紫で塗りつぶした状態で、 M列の色が黄色やグレーになっていてほしいです。
あと、TODAY関数を入れる場合は、どこかに「=TODAY()」を入れておけばいいのでしょうか?
(のの2)
>L列の「有*」と他の条件が重なる場合は、 A〜Q列を紫で塗りつぶした状態で、 >M列の色が黄色やグレーになっていてほしいです。 >3.P列が「無し」なら M列 を黄色で塗りつぶし(手動) では、黄色と(グレー・オレンジ)はどちらが優先?
>あと、TODAY関数を入れる場合は、どこかに「=TODAY()」を入れておけばいいのでしょうか? 「数式が」の横のバーに上の式を入れてもらえばいいはずです。 (じゅんじゅん)
(じゅんじゅん)さん
黄色の条件を最後に入力するので…黄色を優先にしたいです。
>「数式が」の横のバーに上の式を入れてもらえばいいはずです。 了解しました! 条件付書式にそのまま式を入力したらいいんですね。 ありがとうございます。 (のの2)
>3.P列が「無し」なら M列 を黄色で塗りつぶし(手動) まず条件付き書式でM列をグレー又はオレンジで塗りつぶすようにすれば、ファイルを開いた時に それは実行されます。 そのご、P列の値が変化した時に黄色に塗っても、ファイルを保存し閉じて、再度開くと条件付き書式 の方で塗りつぶされると思います。 書き込んだP列の値をもう一度書き込まないと黄色にはならないかも。
そこまでM列を黄色にする必要性は、やっぱりあるのでしょうか?
或いは1.のB列に入力があった場合、M列にも必ず入力を行なうのであれば、M列の条件1をなくして 条件1に黄色になる条件 「数式が」 =AND(B1<>"",P1="無") 書式 枠線 と 黄色塗りつぶし
条件2と3はそのままと言う方法もできるかも。 この場合、M列は、黄色・グレー・オレンジのどれかになっています。 ⇒B列に入力があればですけど。 (じゅんじゅん)
残りは、M列を除くA〜Q列を選択 条件付き書式で 条件1 [数式が」 =AND($B1<>"",$L1="有") 書式 枠線 と 紫塗りつぶし 条件2 「数式が」 =$B1<>"" 書式 枠線
(じゅんじゅん)
M列の条件付き書式のおさらい
条件1に黄色になる条件 「数式が」 =AND(B1<>"",P1="無") 書式 枠線 と 黄色塗りつぶし
条件2にオレンジになる条件 =AND(B1<>"",(M1-TODAY())<31,M1>=TODAY()) と入力 書式は 枠線と オレンジの塗りつぶし
条件3にグレーになる条件 =AND(B1<>"",M1<TODAY()) と入力 書式は 枠線と グレーの塗り潰し
で、どうでしょうか? (じゅんじゅん)
>で、どうでしょうか? (じゅんじゅん)
やっぱり条件が1つたりませんでした。 申し訳ないです。 (じゅんじゅん)
そのシートタブを右クリック⇒コードの表示に Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Column <> 2 Then Exit Sub If .Cells.Count > 1 Then Exit Sub If .Value <> "" Then With .Offset(, -1).Resize(, 17) .Borders.LineStyle = xlContinuous .Borders(xlInsideVertical).LineStyle = xlContinuous End With ElseIf .Value = "" Then With .Offset(, -1).Resize(, 17) .Borders.LineStyle = xlNone .Borders(xlInsideVertical).LineStyle = xlNone End With End If End With End Sub これをコピペする。(B列に値が入ると、A列〜Q列まで罫線を引く。B列が空白だと罫線は消える)
M列を除くA〜Q列を選択 条件付き書式で 条件1 [数式が」 =AND($B1<>"",$L1="有") 書式 紫塗りつぶし
M列の条件付き書式
条件1に黄色になる条件 「数式が」 =AND(B1<>"",P1="無") 書式 黄色塗りつぶし
条件2にオレンジになる条件 =AND(B1<>"",(M1-TODAY())<31,M1>=TODAY()) と入力 書式は オレンジの塗りつぶし
条件3にグレーになる条件 =AND(B1<>"",M1<TODAY(),M1<>"") と入力 書式は グレーの塗り潰し
でいけると思います。 だいぶ長くなりましてすいません。 (じゅんじゅん)
(じゅんじゅん)さん
いろいろありがとうございます。 早速やってみました。
それで……………大変申し訳ないのですが…条件の訂正があります。 「作成日」を基準に期限の有無を色で表示したかったわけなのですが たとえば、2007/9/21に作成をするとその1年後の2008/9/21が期限切れ→グレー 期限切れになる1ヶ月前の2008/8/21になると→オレンジ になってほしかったのでした。きちんと説明できていなくてすみません。 「今日+1年」という感じになるのでしょうか??? その場合は、 条件2にオレンジになる条件 =AND(B1<>"",(M1-TODAY())<31,M1>=TODAY()) と入力 書式は オレンジの塗りつぶし 条件3にグレーになる条件 =AND(B1<>"",M1<TODAY(),M1<>"") と入力 書式は グレーの塗り潰し をどう変えたらいいのでしょう。
それから、マクロで罫線を引く分ですが、新規でB列に入力するとA〜Q列まで枠線が引かれる のですが、すでに入力済みの部分はA列しか枠線が引かれません。 これはどうしたら…(>_<)
もう少しお助けくださいませ。 (のの2)
>すでに入力済みの部分はA列しか枠線が引かれません。 下記のコードを標準モジュールにコピペして実行してみて下さい。
Sub test() Dim r As Range For Each r In Range("B1", Cells(Rows.Count, "B").End(xlUp)) r.Value = r.Value Next End Sub
M列の件については、期限日を別のセルに表示させた方が扱いやすいかと思います。 数式が長くなってしまい受け付けてもらえませんでした。 (じゅんじゅん)
(じゅんじゅん)さん
早速ありがとうございます。
>下記のコードを標準モジュールにコピペして実行してみて下さい。 ツール―マクロ―Visual Basic Editor―標準モジュールタブ―モジュール1 に コピペでいいんですよね。 マクロの実行をしてから枠線が付くまでに時間がかかったのと、他のシートにもデータが あるので、ちょっとドキドキしてました(・ω・;) でも、無事に枠線はつきました!!
>M列の件については、期限日を別のセルに表示させた方が扱いやすいかと思います。 M列の横に1行挿入し、=M1+365 にしました。それで、M列の条件付書式の M1をN1にしました。 マクロのほうも1行増えたので、「17」が列数のようなので「18」にしました。 ちゃんと出来ているか若干不安ですが、ぱっとみた感じ大丈夫そうです。
ありがとうございました!! (のの2)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.