- ベストアンサー
エクセル VBAで入力
エクセル初心者です。 条件付き書式で一つのセルに特定の文字列を入力した際に、そのセルと任意の法則性のある複数のセルに(入力内容は無関係でセルの行・列に法則性があります)特定の塗りつぶしを行いたいのですが、どのようにすればよいのでしょうか。 条件付き書式をすべて設定する(手打ち)するのが最も確実で間違いの内方法ではありますが、新規に行・列を挿入した場合、その行・列には条件付き書式が設定されていませんので、意図した作用を起こさなくなってしまいます。 上記ではよくわからないと思いますので、具体的な例を入れさせていただきます。 例)) 任意のセル(A13)に特定の文字列(OK)と入力する。 特定文字列に反応して、そのセルの列に(A12からE12、F12からH12)赤色の塗りつぶしを入れる。 上記は1セルに対して行われますが、VBAを使用してA12からA5000までを検索対象として持たせて、それぞれのセルの列に対して塗りつぶしを入れられるようにしたいと思っています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
マクロを使わなくとも次のようにしてはどうでしょう。 B12セルからH5000セルまでを範囲として選択します。 「ホーム」タブの「条件付き書式」を選択し、「新しいルール」を選択します。 「数式を使用して・・・・・」にチェックをしてから下の窓には次の式を入力します。 =$A12="OK" 「書式」から「塗りつぶし」のタブで望みの色を設定して終了します。
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! >任意のセル(A13)に特定の文字列(OK)と入力する。 >特定文字列に反応して、そのセルの列に(A12からE12、F12からH12)赤色の塗りつぶしを入れる とありますが、(A12)に特定文字列(OK)のように、同行での操作だと判断しています。 それと >新規に行・列を挿入した場合・・・ とありますので、列を挿入・削除した場合でも A列が「OK」だとA~G列まで色がつくようにしたい訳ですよね? VBAになってしまいますが、一例です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてA列にデータを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim i As Long If Intersect(Target, Range("A12:A5000")) Is Nothing Or Selection.Count <> 1 Then Exit Sub i = Target.Row If Target = "OK" And Target <> "" Then Range(Cells(i, "A"), Cells(i, "G")).Interior.ColorIndex = 3 Else Rows(i).Interior.ColorIndex = xlNone End If End Sub 'この行まで ※ 条件付書式がの設定がしてある場合は色の変化がありませんので、 条件付書式はすべて削除しておいてください。 参考になりますかね?m(_ _)m
お礼
回答ありがとうございます。 試してみたのですが、どうもうまく起動しませんでした(泣) お時間ありましたら、記載くださいましたVBAの命令を解説していただけましたら嬉しいです。 特に Dim i As Long Is Nothing Or Selection.Count <> 1 i = Target.Row Range(Cells(i, "A"), Cells(i, "G")).Interior.ColorIndex = 3 Rows(i).Interior.ColorIndex = xlNone 上記四箇所に関しては初めて見る形なので、ご教授頂ければ幸いです
お礼
回答ありがとうございます。 そ、そんなに簡単な方法でできるとは…… 本当に助かりました