プロが教える店舗&オフィスのセキュリティ対策術

こんにちは!
見ていただいてありがとうございます(*^_^*)

A列の内容によって、他のセルが塗りつぶされるマクロを作りたいです!

A列が作業中→B列とC列のみ塗りつぶし
A列が対応済→D列のみ塗りつぶし
A列が完了 →B列からD列まで全て塗りつぶし

塗りつぶしは赤RGB(255,0,0)で塗りつぶそうと思っています!

データが下に追加されても都度対応できるようにしたいです♪

色々試しましたがうまくいきません(;_;)
お力お借りできますと嬉しいです(*^_^*)

よろしくお願いしますm(_ _)m

質問者からの補足コメント

  • うーん・・・

    同じセルの書式を変更するのは出来ましたが、
    ここからどうすれば良いのか‥(;_;)

    sub sample ()
    dim r as range
    dim f as formatcondition

    set r = range (“A:AH”)

    set f = r.formatconditions.add(type:=xlcellvalue, operator:=xlEqual, formula1:=“作業中”)

    f.interior.color = RGB(255,0,0)

    end sub

      補足日時:2019/08/20 13:35
  • NO.1さん

    とっっても丁寧にありがとうございますヽ(;▽;)ノ

    windows10だと仕様が違うのか、うまくいかず(>_<;)

    シートモジュールにする!ということを教えていただいたので、シートモジュールにする方法をこれから調べていきます(*≧∀≦*)!

    突破口が見えて嬉しいですヽ(;▽;)ノ

    本当に本当にありがとうございました〜!!!(((o(*゚▽゚*)o)))

      補足日時:2019/08/20 16:10

A 回答 (2件)

こんにちは!



>データが下に追加されても都度対応できるようにしたいです♪

一番簡単なのは、B~D列に手動で各条件に対応する条件付き書式を設定すればよいと思うのですが・・・

VBAでの方法をご希望だというコトなので、一例です。
チェンジイベントにしているので
↓のコードをシートモジュールにしてみてください。

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim c As Range
  If Intersect(Target, Range("A:A")) Is Nothing Or Target.Count > 1000 Then Exit Sub
   For Each c In Target
    With c
     Select Case .Value
      Case "作業中"
       .Offset(, 1).Resize(, 2).Interior.Color = RGB(255, 0, 0)
      Case "対応済"
       .Offset(, 3).Interior.Color = RGB(255, 0, 0)
      Case "完了"
       .Offset(, 1).Resize(, 3).Interior.Color = RGB(255, 0, 0)
      Case Else
       .Offset(, 1).Resize(, 3).Interior.ColorIndex = xlNone
     End Select
    End With
   Next c
End Sub

※ データ消去の場合など、極端に広い範囲(列全体など)を指定すると「応答なし」の状態になりますので、
とりあえず1000セル以内限定としてみました。

※ 万一、B~D列に条件付き書式が設定してあると
条件付き書式が優先されますので、何も変化しません。m(_ _)m
    • good
    • 1
この回答へのお礼

あなたに会えてよかった

迅速なご回答誠にありがとうごさいますヽ(;▽;)ノ

初めて使う言葉ばかりで、1つずつ意味を調べているところです!
お勉強になります(*≧∀≦*)!!

しかし、実行しようとすると「マクロ名の選択画面」が出てきてしまいます(>_<;)
解決方法ご存知でしょうか?ヽ(´o`;

お礼日時:2019/08/20 14:32

No.1です。



>実行しようとすると「マクロ名の選択画面」が出てきてしまいます(>_<;)

ん?もしかしてシートモジュールになっていないのでは?

Excel画面の左下にある、操作したいシート見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに

前回のコードの
>Private Sub ・・・
から、最後の
>End Sub
までをこの画面上で範囲指定 → 右クリック → コピー! → そのままVBE画面に貼り付けてください。

あとはA列データに変更があるたびに、B~D列に色がついたり、消えたするはずです。m(_ _)m
    • good
    • 1

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

このQ&Aを見た人はこんなQ&Aも見ています