Excel2007の条件付き書式をVBAで行う方法

このQ&Aのポイント
  • Excel2007での条件付き書式をVBAで行う方法を教えてください。
  • E列に「あ」と入力されると、A列からE列までのフォントが青、セルの塗りつぶしが黒になる。E列に「い」と入力されると、A列からE列までのフォントが黒、セルの塗りつぶしが白になる。E列に「あ」「い」以外が入力された場合は何もしない。
  • セルのフォントと塗りつぶしの色を変更する条件付き書式をVBAで実装する方法を教えてください。また、RGBを使って色の指定が可能かどうかも知りたい。
回答を見る
  • ベストアンサー

Excel2007の条件付き書式をVBAで行う方法

Excel2007での条件付き書式をVBAで行う方法を教えてください。 【やりたいこと】 E列に「あ」と入力されると、A列からE列までのフォントが青、セルの塗りつぶしが黒になる E列に「い」と入力されると、A列からE列までのフォントが黒、セルの塗りつぶしが白になる E列に「あ」「い」以外が入力された場合は何もしない。 #A列からD列まではすでに別の文字列が入力されています。 【使いたい構文】 イベントプロシージャ(Change)を使いたい。 Select Caseを使いたい。 【願わくば・・・】 色の指定をRGBですることもできるのでしょうか? 過去の質問より、塗りつぶしを変更する方法や、 フォントの色を変更する方法は見つかりましたが、 両方を変える方法を見つけることができませんでした。 Select Caseの処理を複数させようとして挫折しています。 そもそも一度に複数処理をさせることは無理なのでしょうか? よろしくお願いします。

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

  • ベストアンサー
noname#144013
noname#144013
回答No.1

こんにちは。 下記にサンプルマクロを掲載しましたので、宜しければ検証 してみて下さい。(※これは一例です) > E列に「あ」「い」以外が入力された場合は何もしない。 『何もしない』、ということは   『それまでの色設定を維持する』 ということになるので、 仮にそれまでの設定が「あ」の設定だった場合は   その色設定(フォント色=青、セル色=黒)のまま ということになりますが、それで宜しいのでしょうか? 以下のサンプルマクロでは、E列セルで変更された文字が 「あ」でも「い」でもなかった場合は、A列~E列の色設定を デフォルトの色設定に戻す、という処理にしています。 ※もし、本当に何もしなくて良いのであれば、下記マクロの  Case Else~の箇所を削除するかコメントアウトして下さい。 ■サンプルマクロ ======================== '== セル内容変更時のイベント処理 == Private Sub Worksheet_Change(ByVal Target As Range)   Dim rg As Range   'Rangeオブジェクト取得用   Dim nRowPos As Long '色変更対象の行位置   Dim nClmPos As Long '色変更対象の列位置   Dim nRowNum As Long '色変更対象の行数   Dim nClmNum As Long '色変更対象の列数   '変更セル(複数セルも含む)が[E列]以外なら戻る   If Application.Intersect(Target, Range("E:E")) Is Nothing Then     Exit Sub   End If   '色変更するセル範囲の位置設定   nClmPos = 1 '色変更対象の列位置   nRowNum = 1 '色変更対象の行数   nClmNum = 5 '色変更対象の列数   '変更セルが複数の場合を考慮し[For Each]でループ処理   For Each rg In Target     '対象セルが1行目(タイトル行)以外かつE列なら処理     If rg.Row <> 1 And rg.Column = 5 Then       '対象セルの行位置を取得       nRowPos = rg.Row       '変更セルの内容により振り分け       Select Case rg.Value       Case "あ"         '変更セルの文字が"あ"の時は、フォント色=白、セル色=青とする         '※[青]と[黒]だと判りづらいので[白]と[青]にしました。         With Cells(nRowPos, nClmPos).Resize(nRowNum, nClmNum)           .Font.Color = RGB(255, 255, 255)           .Interior.Color = RGB(0, 0, 255)         End With       Case "い"         '変更セルの文字が"い"の時は、フォント色=黒、セル色=黄とする         '※[黒]と[白]だとデフォルト色と同じなので[黒]と[黄]としました。         With Cells(nRowPos, nClmPos).Resize(nRowNum, nClmNum)           .Font.Color = RGB(0, 0, 0)           .Interior.Color = RGB(255, 255, 0)         End With       Case Else         '上記以外の時は、デフォルト色に戻す。         '注)全く何もしなくて良いのなら下記4行はコメントとするか         '  削除して下さい。         With Cells(nRowPos, nClmPos).Resize(nRowNum, nClmNum)           .Font.ColorIndex = xlColorIndexAutomatic           .Interior.ColorIndex = xlColorIndexNone         End With       End Select     End If   Next End Sub ======================== 添付画像は、当方で検証した際のExcelシート画面です。 ※貼れていなかったり、見辛かった場合はすみません。 以上です。

t-tomy
質問者

お礼

早速の回答ありがとうございました。 今回、VBAを初めて操作するので、詳細なコメントアウトを書いていただき、 大変勉強になります。誠にありがとうございます。 > 『何もしない』、ということは >   『それまでの色設定を維持する』 > ということになるので、 > 仮にそれまでの設定が「あ」の設定だった場合は >   その色設定(フォント色=青、セル色=黒)のまま > ということになりますが、それで宜しいのでしょうか? ご指摘の通り、「何もしない」ではおかしく、 「デフォルトの色にする」が適切でした。 ご指摘ありがとうございます。 With~End Withステートメントを使えば2つの処理を させることができたんですね。勉強になります。 当方の環境にて、思い描いていた通り以上の結果になりました。 お忙しい中、サンプルを作成していただき、ありがとうございました。

関連するQ&A

  • 【EXCEL2003】8つの条件がある書式設定のVBAの書き方

    VBAの書き方について御教授ください! 複数のシートに、入力値が決まっているA列とC列があります。 その入力値の組み合わせによって、入力時にA:Cのセル書式を以下のように8通りに変えたいです。 マクロの自動記録しか経験がなく調べたのですがよくわかりませんでした。 よろしくお願いいたします。 1.A列「あ」・C列なし→セル背景:黄 2.A列「あ」・C列「ア」→セル背景:黄 フォント:青 3.A列「あ」・C列「イ」→セル背景:黄 フォント:赤 4.A列「い」・C列なし→セル背景:緑 5.A列「い」・C列「ア」→セル背景:緑 フォント:青 6.A列「い」・C列「イ」→セル背景:緑 フォント:赤 7.A列なし・C列「ア」→フォント:青 セル背景:なし 8.A列なし・C列「イ」→フォント:赤 セル背景:なし

  • Excel2010の条件付き書式を教えてください。

    (セル名は仮ですが) 列Aは文字列で、文字色が黒になっています。 列Bは文字列ですが、 入力されるのは大文字のCまたは大文字のCM、または空欄のいづれかです。 B1セルに大文字のCが入力された場合は、A1セルの文字色が赤くなるようにし、 それ以外は黒文字のままにしたいのですが、可能でしょうか? いろいろ試したのですが、上手くいかないので質問させて頂きました。 どうぞ宜しくお願いいたします。

  • excel2010条件付き書式後にVBAにて処理

    VBAビギナーのmaruです Excel2010のワークシート上の範囲(Range(”E12:K120“))内の 各セルに条件付き書式(複数あり)にてフォント色を赤く(RGB 255,0,0) 変更したセル内のデータ(数字)のみ削除(””)するVBAを行いたいのですが 以下のコードでは、「セルの書式」で設定したフォント色で削除されてしまい 条件付き書式で変更された赤文字に反映されません ご教授お願い致します Private Sub CommandButton4_Click() 'データ入力セル内の赤文字の削除 Dim rd As Range For Each rd In Range("E12:K120") For i = 1 To rd.FormatConditions.Count If rd.FormatConditions(i).Font.Color = RGB(255, 0, 0) Then rd.Value = "" End If Next Next End Sub 以上、宜しくお願い致します

  • 条件付き書式設定について

    A列列に白、黒、茶など色をならべてあります。 B列~E列のそれぞれの行に数値を入れてあります。 下記のとおり色を付けたいのですがどのようにしたらよいでしょうか A2が白の場合、B2~E2行の数値があるセルに緑の色を付ける。 A3が黒の場合、B3~E3行の数値があるセルに黄色の色を付ける。 A3が茶の場合、B5~E5行の数値があるセルに赤色の色を付ける。 以下も同じようにしたい。 サンプル表を添付します。 よろしくお願いします。

  • 条件付き書式について

    条件に応じてセルの色を変えたいです。 具体的な処理としては 3つのセルA,B,Cがあり A+B=C の時、3つのセルの色を同じ色に変更したいです。 ただしA,Bの両方とも何も入力されてない時は色は変更したくないです。 条件付き書式で設定したいのですが、方法を教えてください。 半日悩みましたが解決できてません(TT)

  • エクセル Excel 関数or条件付き書式

    あけましておめでとうございます(*^_^*) 新年早々教えてください! セルに指定された値(文字列)を入力すれば 自動で別のシートの別のセルの書式が変更される (あるいは関数により自動で値が入力される) 方法を探しています! エクセルマスターの方お願いします! 【具体的に…】 シート1の セルA1に  指定された文字列(例-ねずみ)を 入力すれば    ↓ シート2の セルC10の 書式が 自動変更される(例-フォントが赤になる) もしくは 【具体的に…(2)】 シート1の セルA1に  指定された文字列(例-ねずみ)を 入力すれば    ↓ シート2の セルC10に 指定された値(例-厄年)が 自動入力される そんな方法を教えてください! どちらもできれば最高です!!

  • エクセル 条件付書式について

    エクセルの条件付書式について、お尋ねします。 A1のセルには、背景と同じ色で文字が入力されていて、そこに文字を上書きすると、A1のセルの文字の色が黒に変更されるようにしました。 その後B1のセルに文字を入力すると、A1からE1までのセルの背景がグレーになるようにしたかったのですが、A1のセルだけが、塗りつぶされませんでした。 説明が十分かどうかわからないのですが、質問としては、このようなことが、条件付書式で可能かどうか、可能ならば、その方法を教えていただけますでしょうか。 どうぞよろしくお願いいたします。

  • 条件付き書式設定について

    教えて下さい。 Excel 2010を使用しています。 条件付き書式設定を使用し複数条件を入力しましたが上手く反応しません。 間違い等があれば指摘頂きたくお願いします。 具体的に対象としたいセルはA4~Z4です。 ・E4には数値の「1」「2」が入ります。 ・F4には数値の「1」「2」が入ります。 そこで条件付き書式設定→新しいルールーから数式入力し (=$E$4=1・・塗りつぶしの赤  =$E$4=2・・塗りつぶしの青) (=$F$4=2・・フォントの青)の3条件を入力しました。 塗りつぶしは問題なく反応してくれます、また、F4のみに数値入力した場合はフォント青となり、反応してくれますがE4に数値が入力されセルの色が付いている時、F4に2を入力するとセルの色が消えてしまいます。 数式や入力に問題があるのでしょうか、もしくは条件が多すぎて反応しないのでしょうか ご教示お願いします。

  • Excel2002 条件付き書式

    A   B 3   2005/3/8 2   2007/7/8 5   休み A列が3以上でB列に日付が入っているセルのみB列のセルに色を付けることは可能ですか?? つまり上の表ではB2「2005/3/8」のセルに色が付くことになります。 おわかりの方教えてくださーい!

  • エクセル2010で条件付き書式の方法

    エクセルの「D列」に文字列として数字が入力されています 例 23_2 30_3 56_1 等です この「D列」で左から2文字を判断して太文字あるいはフォント色を変更いたい場合 (条件書式ルールで 「数式を使用して、書式設定をするセルを決定」 を選択) 30_3 と入力されたセルの書式を変更したい場合・・ その時の数式の入力なのですが =LEFT(D1,2)="30" としたのですが機能しません どのように数式を打ち込めば良いか教えてください