• ベストアンサー

空白セルと行に色をつけるVBA Excel2010

VBAの超初心者です。 条件が一致した時に、セルの背景を黄色にしたいのですが、VBAで教えて下さいませんか? D1が空白セルの場合には、C1のみを黄色。 D1とB1の両方が空白の場合は、A1からC1を黄色にしたいのです。 尚、行はどんどん増えて行く予定です。 「条件付き書式」では考えておりません。 よろしくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.7

No.2・4・5です! >2~79行間は連続してデータが入っているわけではないのです。 >「2~79行間のランダムにデータが入力されたものに対して」 >という事なんです ということなので・・・ ある行には全くデータがない場合もあるということだとしての一例です。 A~D列にデータがない行は無視しています。 Sub test() Columns("A:C").Interior.ColorIndex = xlNone Dim i As Long For i = 2 To 79 If WorksheetFunction.CountA(Range(Cells(i, 1), Cells(i, 4))) Then If Cells(i, 2) <> "" And Cells(i, 4) <> "" Then Range(Cells(i, 1), Cells(i, 3)).Interior.ColorIndex = 6 ElseIf Cells(i, 4) <> "" Then Cells(i, 3).Interior.ColorIndex = 6 End If End If Next i End Sub 今度は希望通りになれば良いのですが・・・m(_ _)m

xx_HELP_xx
質問者

お礼

本当にありがとうございます!! やりたい事がちゃんと出来ました! 何度も何度も聞いてしまい、 その度にご親切に教えて下さって、心より感謝しております。 これを機に、しっかり勉強して行きたいと思います。

その他の回答 (6)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.6

NO3です。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column < 5 Then Range("A:C").Interior.ColorIndex = xlNone For i = 2 To UsedRange.Rows.Count Range("A" & i & ":C" & i).Interior.ColorIndex = xlNone If Range("D" & i).Value = "" Then Range("C" & i).Interior.ColorIndex = 8 If Range("B" & i).Value = "" And Range("D" & i).Value = "" Then Range("A" & i & ":C" & i).Interior.ColorIndex = 6 Next End If End Sub では如何でしょうか。 但し、データの量が増えてくるとパソコンへの負担も増えますよ。

xx_HELP_xx
質問者

お礼

ありがとうございます。 教えて下さったコードでも出来たのですが、 見やすさの面(私以外にも使うファイルの為)から、他の方をベストアンサーとさせて頂きましたが、 ご親切に教えて下さり、ありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

No.2・3です! たびたびごめんなさい。 前回の投稿で間違いがありました。 2行目~79行目であれば For i = 2 To 79 でした。 尚、この場合は列は全く関係なくてデータがあるなしにかかわらず、マクロは2~79行目まで走ります。 何度も失礼しました。m(_ _)m

xx_HELP_xx
質問者

お礼

お返事をどうもありがとうございます。 2~79行間は連続してデータが入っているわけではないのです。 「2~79行間のランダムにデータが入力されたものに対して」 という事なんです。 本当に、こちらこそ何度もすみませんっ!!!

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.2です。 >A列の2行目から79行目の範囲にデータが入っているものに対して・・・ とありますので、2行目から79行目と行数が決まっているのであれば >For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row の行を For i = 1 To 79 とすれば大丈夫です。 尚、データ数がこれから増えるのであれば For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row としておけばA列の2行目から最終行までの操作が可能になります。 この程度でよろしいでしょうかね?m(_ _)m

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

これからデータを入力や編集した行に有効です。 シート名のタブをクリック コードの表示をクリックして VBエディターを起動 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column < 5 Then Range("A" & Target.Row & ":C" & Target.Row).Interior.ColorIndex = xlNone If Range("D" & Target.Row).Value = "" Then Range("C" & Target.Row).Interior.ColorIndex = 8 If Range("B" & Target.Row).Value = "" And Range("D" & Target.Row).Value = "" Then Range("A" & Target.Row & ":C" & Target.Row).Interior.ColorIndex = 6 End If End Sub 貼り付けて、Vbエディターを閉じます A~Dデータを入れていく、あるいは入力済みのデータを変更してみてください。 既に入力済みのデータに対して実行するものではありません。

xx_HELP_xx
質問者

お礼

どうもありがとうございます。 入力済みのデータに色を付けたかったのです。 私の説明不足ですみません。 お力を貸して頂いた事はとても感謝しております。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 無限に最終行まで色付という訳にはいかないと思いますので とりあえずA列には必ずデータがあるという前提です。 D列にデータがある場合はその行は色を付けなくて良いわけですよね? 一例です。 ↓のコードをコピー&ペーストしてデータが増えるたびにマクロを実行してみてください。 (本来であればコマンドボタンをSheet上に配置し、ボタンをクリックするとマクロが実行されるようにする方が良いかもしれませんね。) Sub test() Columns("A:C").Interior.ColorIndex = xlNone Dim i As Long For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 2) = "" And Cells(i, 4) = "" Then Range(Cells(i, 1), Cells(i, 3)).Interior.ColorIndex = 6 ElseIf Cells(i, 4) = "" Then Cells(i, 3).Interior.ColorIndex = 6 End If Next i End Sub こんな感じではどうでしょうか?m(_ _)m

xx_HELP_xx
質問者

お礼

ありがとうございます! A列にデータが入っているという事前提で作って頂き、 何とも機転の利いた配慮をありがとうございました。 私が最初の質問の時に、説明が不足していて申し訳なかったのですが、 「A列の2行目から79行目の範囲にデータが入っているものに対して」 という場合でしたら、 For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row の部分を修正したら良いんですよね? 変数があまり分かってないのですが、その場合はどうなりますか?

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

VBAに取り組みたいのでしたら ・基本構文を身に着けてください。 ・「マクロの記録」を参考にすると、どの操作にはどんな命令(メソッド)を使えばいいのかわかります。 ・何をどうしたいのか、手順を詳細に書き出して、それに合わせてコードを書いてください。 ・エラーがあれば、自動でそこで停止しエラーメッセージが出ますから、どうすればいいのか考えて修正していってください。 下記は、「マクロの記録」例です。 *このような記録を参考にして書き換えていきます。 Range("D1").Select ActiveCell.FormulaR1C1 = "" Range("C1").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With MsgBox "next" Range("D1").Select ActiveCell.FormulaR1C1 = "" Range("B1").Select ActiveCell.FormulaR1C1 = "" Range("A1:C1").Select With Selection.Interior .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With

xx_HELP_xx
質問者

お礼

ありがとうございます。 おっしゃる通り、基本操作を学ばなければいけないのですが、 コードをよく分かっていない上に、時間がありません。 申し訳ないのですが、質問のコードを書いて頂けませんか?

関連するQ&A

  • 塗りつぶしで色付けしたセルの1行を同じ色にしたい

    いつも、いつもお世話になりありがとうございます。 下図のC列(C4~C34)に「セルの塗りつぶし」で色を付けた(3~5色ほど予定)セルと同じ色で 1行(D列~AG列)を塗りつぶす方法はないでしょうか? しかも、条件付き書式で設定したセルは下図の4行目のように、その書式の色を そのまま残したいのです。 途中、空白のセルも有ります。 条件付き書式の設定を使って「数式を・・・」「文字」「値」などを利用する方法は 検索して出てくるのですが、C列は任意で言葉を入れ、「セルの塗りつぶし」で着色します。 ですから、条件は 1.C列のセルの色を読み取り、その右側の1行(D列~AG列)を同じ色にする。 2.条件付き書式で設定したセルは、その書式の色をそのまま残す。 3.途中、値も関数式も文字も何もない空白のセルもある。 そんな都合の良い方法は有りますでしょうか? もし有りましたら、どうかご教授いただけないでしょうか? よろしく、お願い致します。

  • エクセル条件付き書式(空白でない場合に色を付ける、偶数行・奇数行毎に色を変える)

    エクセルの条件付き書式の設定で、 (1)セルが空白でない場合に色を付ける、 (2)偶数行・奇数行毎に色を変える という2つのことを同時に行う方法があれば 教えていただけないでしょうか? (※空白セルは、色なしに設定) (1)=A1<>"" → 赤 (2)=MOD(ROW(),2)=0 → 青  =MOD(ROW(),2)=1 → 黄 上記の設定の場合、空白セルが青・黄になります。 入力すると赤に変わります。 こちらが行いたいことは、 【空白セルは「色なし」で、入力すると、 奇数行は黄色、偶数行は青になることです。】 例 ABC 1* ←A1は黄 2 * ←B2は青 3 A1とB2以外のセルは色なしとなるようにしたい。 ただし、入力した場合に色がつくようにしたい。 よろしくお願いします。

  • エクセルのVBAを使った条件付き書式

    VBAの初心者です。というか使ったことがありません。 4つ以上の条件付き書式はVBAが必要になるようなので困惑中です。 下記の条件付き書式をVBA作りたいと思っています。 「1」を含む値の場合セルの背景を黄色に 「2」を含む値の場合セルの背景を緑色に 「3」を含む値の場合セルの背景を水色に 「4」を含む値の場合セルの背景を赤色に 例) 1北海道 → セルの背景を黄色 2山形 → セルの背景を緑 これを実現するVBAのコードを教えてください。 また、そのコードをどこに貼付ければいいのでしょうか? まったくの初心者で申し訳ありません。

  • EXCEL2007セルの色を数式で取得したい

    EXCEL2007セルの色を数式で取得したい EXCEL2007で条件付き書式を使って現在使って特定の値が入っているセルを 条件付き書式を使って背景を赤色を変えるというシートを作成しました。 さらに、特定のセルをダブルクリックすると書式を水色に変わるという処理 をVBAで実現したのですが、既に条件付き書式によって赤くなっているセルの 背景色を水色に変えることができません。 つまり、書式設定した背景色が条件付き書式の背景色につぶされてしまいます。 書式設定した背景色(水色)の方を優先させたいので、条件付き書式の条件に セルの書式に背景色が設定されているときには条件外とするようにしたいのですが。 どうやって、数式で書式設定した背景色を取得できますか? もしくは、他の方法で実現できるアイデアがありましたら、紹介してください。 どうぞ、よろしくお願いいたします。

  • エクセルVBA 条件にあうときセルを塗りつぶすには?

    エクセルVBA 条件にあうときセルを塗りつぶすには? エクセルVBAについて教えてください。 _________A 列 _________B 列_________C列_________D列 -------------------------------------------- 1行| 基準値_________ 5_____________1____________8 2行| りんご____________1_____________9____________0 3行| みかん___________12___________5____________3 4行| ぶどう____________15___________7____________8 5行| バナナ____________3_____________1____________4 上図のようにデータがあります。 (実物は列行共に膨大です。また条件を4つ以上つける予定なので条件付書式は使えません) 各列の基準値に対して、セルの増減が、0以下のときに黄色に、5から8のとき大きくなるときに赤、9以上のときに青にセルの色を塗りつぶしたいです。 どのようにすればよいでしょうか? B列の場合、基準値が5です。 B2のセルの場合、基準値5と1(B2セル)の増減は-4です。 増減が0以下のときは黄色に、増減が5から8のときは赤に、増減が9以上のときに青にするので、このときは黄色に塗りつぶします。 B3のセルの場合、基準値5と12(B3セル)の増減は7です。 増減が5から8のとき赤に塗りつぶすので、このセルは赤に塗りつぶします。 B4のセルの場合、基準値5と15(B4セル)の増減は10です。 増減が9以上のとき青色に塗りつぶすので、このセルは青色に塗りつぶします。 C2のセルの場合は、C列の基準値は1(C1セル)です。 基準値1と9(C2のセル)の増減は8です。 増減が5から8のとき赤に塗りつぶすので、このセルは赤に塗りつぶします。 よろしくお願いいたします。

  • EXCEL2007 WEEKDAY関数で空白セルの色

    家計簿をエクセルでつけているんですが、 WEEKDAY関数を使って、土日に色をつけました。 行を挿入すると、空白セルに土曜日の色がつくんですが、どうすれば色がつかないようにできるでしょうか? 列Aのすべてに対して、空白なら色なしって風に条件付き書式を利用したいです。

  • エクセル VBA ある条件でセルに色をつけたいのですが、

    エクセル VBA ある条件でセルに色をつけたいのですが、 例えば、A2からA50に文字列が入っていて、ある処理を終えると、空白を除くセルに薄い水色(33)をつけます。ここまでは、VBAで作成できました。 次に、空白を除くセルが、すべて薄い水色になったら、A1を薄い黄(36)にしたいのです。 教えてください。よろしくお願いします。

  • VBAで色の付いているセルの行削除

    VBAで色の付いているセルの行を削除することは出来ないでしょうか? 量が多すぎて一つ一つ削除すのは大変で間違えて削除してしまいそうなので・・・ - 文字または数字 ■ 色の付いたセル(赤)  A B C D E F・・・ 1- - - - - - 2- - - - - - 3- - - ■ - - 4- - ■ - - - 5- - ■ - - - 6- - - - - - 7- - - ■ - - 8- - ■ - - - 9- - ■ - - - 10- - - - - -       ↓  A B C D E F・・・ 1- - - - - - 2- - - - - - 6- - - - - - 10- - - - - - よろしくお願いします。

  • 条件付き書式で1行おきに色付けした表のセルの数値によりフォントの色を変更したい

    Excel2003です 1行おきに色付け(パターン)した表のC3:C23に計算結果の数値が表示され、その数値がC1より小さいときはフォントの色を「赤」、数値がC1より大きいときはフォントの色を「緑」、数値が表示されないときはその書式を適用しない(1行おきの色付け(パターン)のみ設定)条件付き書式を設定したいのですがその方法を教えてください 例えば 奇数行にパターン「薄い黄色」を設定し、 条件1 =$C3<$C$1 フォントの色「赤」パターンを「薄い黄色」 条件2 =$C3>$C$1 フォントの色「緑」パターンを「薄い黄色」 に設定すると数値を入力しないセルにも「薄い黄色」のパターンが設定されてしまいます。偶数行の空白セルにはパターンを設定しない条件の設定の方法を教えてください。 説明でが不足のときは補足したいと思いますのでよろしく御願いします。    

  • セルの値が空白じゃないなら色を付ける

    セルの値が空白じゃないなら色を付ける、 という事をエクセルの条件付き書式でやりたいのですが、 <>"" としても、 ="<>""""" 変化してしまい、色が付きません。 「セルの値が空白じゃないなら色を付ける」にするにはどうすればいいでしょうか?

専門家に質問してみよう