• ベストアンサー

マクロでの条件付書式について

374649の回答

  • 374649
  • ベストアンサー率38% (203/527)
回答No.8

No.3です No.6さんも動作確認しました、イベントマクロというのは必ず”イベント”が発生して作動するのでVBAは入力とイベントとは同時に処理してないのではという感じがしますが。 入力動作をしてさらにイベント発生動作をして初めてマクロが実行されるような感触がします。 再度のフォーカスを当てる必要があると思われるのですが、良いアドバイスを期待します。

tatewaki_K
質問者

お礼

まさにそれで止まっています・・・ 再度フォーカスを当てないと色が変わりません(><)

関連するQ&A

  • セルの塗りつぶしマクロを作ったのですが・・

    初めて投稿します。どうぞよろしくお願いします。 エクセルの条件付き書式では4通りにしか設定できないため、マクロ初心者ではありますが、こちらでの回答を参考に作ってみました。 0~0.999 薄ピンク 1~1.999 ピンク 2~2.999 赤 3~3.999 オレンジ   ↓   ↓ 25~25.999 濃い紫 と26パターンに自動的に塗りつぶすマクロを作りました。 ところが空白のセルも0~0.999で指定している薄ピンクに塗りつぶされてしまいます。 何分初心者なもので、どこを修正したら良いのかわかりません。 どなたかアドバイス頂けると助かります。 よろしくお願いします。 Sub color0_25() Dim Target As Range For Each Target In Range("A1:Z1000") Select Case Target.Value Case Is < 0 Target.Interior.ColorIndex = 0 Case Is < 1 Target.Interior.ColorIndex = 38 Case Is < 2 Target.Interior.ColorIndex = 7 Case Is < 3 Target.Interior.ColorIndex = 22 Case Is < 4 Target.Interior.ColorIndex = 3 Case Is < 5 Target.Interior.ColorIndex = 46 Case Is < 6 Target.Interior.ColorIndex = 45 Case Is < 7 Target.Interior.ColorIndex = 44 Case Is < 8 Target.Interior.ColorIndex = 6 Case Is < 9 Target.Interior.ColorIndex = 36 Case Is < 10 Target.Interior.ColorIndex = 35 Case Is < 11 Target.Interior.ColorIndex = 4 Case Is < 12 Target.Interior.ColorIndex = 50 Case Is < 13 Target.Interior.ColorIndex = 14 Case Is < 14 Target.Interior.ColorIndex = 34 Case Is < 15 Target.Interior.ColorIndex = 37 Case Is < 16 Target.Interior.ColorIndex = 33 Case Is < 17 Target.Interior.ColorIndex = 28 Case Is < 18 Target.Interior.ColorIndex = 41 Case Is < 19 Target.Interior.ColorIndex = 5 Case Is < 20 Target.Interior.ColorIndex = 11 Case Is < 21 Target.Interior.ColorIndex = 55 Case Is < 22 Target.Interior.ColorIndex = 17 Case Is < 23 Target.Interior.ColorIndex = 39 Case Is < 24 Target.Interior.ColorIndex = 54 Case Is < 25 Target.Interior.ColorIndex = 13 Case Is < 26 Target.Interior.ColorIndex = 21 End Select Next End Sub

  • マクロで条件付き書式(セルの塗りつぶし)

    2003のため、条件付書式を5つ作るのにマクロが必要なのですが触ったことないので全くわかりません。以下のマクロ作ったのですが、"コンパイルエラー End Subが必要です"と出てしまいます。どこが悪いのか見当も付きません(TT)。添削をお願いします。 やりたいことは、「決まっている範囲内に入力されている単語別にセルの色を分ける」です。 Sub 条件() Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range Set rng = IntersectC9: F28 If rng Is Nothing Then Exit Sub Dim x As Range For Each x In rng Dim myColor As Integer Select Case x.Value Case "りんご": myColor = 3 '赤色 Case "ばなな": myColor = 45 'オレンジ色 Case "みかん": myColor = 6 '黄色 Case "いちご": myColor = 5 '青色 Case "他": myColor = 4 '緑色 Case Else: myColor = xlNone End Select x.Interior.ColorIndex = myColor Next x Set rng = Nothing Set x = Nothing End Sub

  • VBAで条件付き書式設定

    エクセルの一覧表で2行目から4行ずつ上から商品名、商品コード、会社、商品項目とあって、列がAからXまであります。 以前、商品名ごとに自動で色づけしていた時に使っていたVBAです。 Sub 色分け() Dim Target As Range For Each Target In Range("b2:e2,b5:e5,b8:e8,b11:e11,b14:e14,b17:e17,b20:e20,b23:e23") Select Case True Case InStr(Target.Value, "〇〇") > 0 Target.Resize(4, 1).Interior.ColorIndex = 24 Case InStr(Target.Value, "△△") > 0 Target.Resize(4, 1).Interior.ColorIndex = 38 Case Else Target.Resize(4, 1).Interior.ColorIndex = xlNone End Select Next End Sub この色付け条件を4行目の商品項目ごとに変更したいのですが、方法が分からないので教えてください。 なんかすぐ出来そうな気がするんですけど、丸2日やっても分かりませんでした。 よろしくお願いします。

  • イベントマクロについて

    イベントマクロについて質問ですが まず、下記をご覧下さい。 過去にここで回答いただいたものを流用させてもらったものですが もうひとつ機能を追加したいと思います。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column >= 4 And Target.Column <= 34 Then If Target.Row >= 2 And Target.Row <= 100 Then Select Case Target Case "(5)GC" Target.Interior.ColorIndex = 34 Target.Font.ColorIndex = 0 Case "6OS", "6FC" Target.Interior.ColorIndex = 6 Target.Font.ColorIndex = 0 Case "(6)TA", "(6)C" Target.Interior.ColorIndex = 46 Target.Font.ColorIndex = 0 Case "6@BD", "6@C" Target.Interior.ColorIndex = 38 Target.Font.ColorIndex = 0 End Select End If End If End Sub 追加する機能とは、上記で指定した範囲以外のセルを参照して 色を付けるかどうかを区別するものです。 例えば、A2の値が色付けに該当する場合はD2からAH2の中で上記マクロに該当するセルに色を付け、もしA2が該当しない場合は色付けをしない というような感じです。 よろしくお願いします。

  • マクロ 日付の内容でセルを塗りつぶす

    セルに記載された日付が、『TODAY以上なら赤色』・『TODAY以下なら青色』・『それ以外なら塗り潰し無し』にしようと下記のマクロを記述しましたが、思うようになりませんでした。どうしたら治るでしょうか?御指導お願い致します。 Sub セルを色で塗りつぶす() Dim C As Integer C = 5 Do While Cells(5, C).Value <> "" With Cells(6, C) Dim Today As Date Today = Date Select Case .Value Case Is <= Today .Interior.ColorIndex = 8 Case Is >= Today .Interior.ColorIndex = 3 Case Else .Interior.ColorIndex = xlNone End Select End With C = C + 1 Loop End Sub

  • マクロの簡素化

    下記マクロです。 Range("AE6:AE1005").Select Selection.ClearContents Selection.Interior.ColorIndex = xlNone If Range("AD6").Value > 5 Then Range("AE6") = "*" Range("AE6").Select With Selection.Interior .ColorIndex = 3 End With Else End If If Range("AD7").Value > 5 Then Range("AE7") = "*" Range("AE7").Select With Selection.Interior .ColorIndex = 3 End With Else End If If Range("AD8").Value > 5 Then Range("AE8") = "*" Range("AE8").Select With Selection.Interior .ColorIndex = 3 End With Else End If 中略(セルを一個づつ指定しています) If Range("AD1004").Value > 5 Then Range("AE1004") = "*" Range("AE1004").Select With Selection.Interior .ColorIndex = 3 End With End If If Range("AD1005").Value > 5 Then Range("AE1005") = "*" Range("AE1005").Select With Selection.Interior .ColorIndex = 3 End With Else End If Range("AE3").Select 有るセルを参照しその値が5以上だったら別のセルに*マークとセルに色を付けるマクロですが、一個づつセル指定をしていますが、何とか短く出来ないでしょうか? お分かりになる方宜しくお願い致します。

  • エクセル イベントマクロのエラー回避

    イベントマクロを初めて書いてみたのですが A列を全部選択して削除などをするとエラーがて出てしまいます 回避するにはどのようにしたら良いのでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A:A")) Is Nothing Then Select Case Target.Value Case Is = "りんご" cellColor = 3 Case Is = "みかん" cellColor = 6 End Select End If If Not Intersect(Target, Range("B:B")) Is Nothing Then Select Case Target.Value Case Is = "りんご" cellColor = 6 Case Is = "みかん" cellColor = 3 End Select End If Target.Interior.ColorIndex = cellColor End Sub 以上が書いたものです。 皆様の知恵お貸しください 宜しくお願いします。

  • エクセルで特定の文字列の含まれるセルのある行の色を変更したいと思ってお

    エクセルで特定の文字列の含まれるセルのある行の色を変更したいと思っておりますが、関数では出来ないようなのでVBAで作業をしております。なかなかうまくいかずで困ってしまっております。 下記のような関数でシート一枚は出来たのですが、それ以外のシートには反映がされません。 Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range If Application.Intersect(Target, Range("A2:A10000")) Is Nothing Then Exit Sub For Each r In Target If r.Column = 1 Then Select Case r.Value Case "○": r.Resize(1, 12).Interior.ColorIndex = 19 Case "×": r.Resize(1, 12).Interior.ColorIndex = 3 Case "△": r.Resize(1, 12).Interior.ColorIndex = 6 Case Else: r.Resize(1, 12).Interior.ColorIndex = xlNone End Select End If Next r End Sub 無知なので、ネットで調べて上記のような数式を拾ってきたのですが、どうやら1シート分の設定に書かれているようです。。。 全シートに反映がされるように設定をするにはどこをどのように書き換えればよろしいでしょうか。 お分かりの方がいらっしゃいましたら、よろしくお願いいたします。

  • VBA セルの色を変更する

    VBA(エクセル2007使用)で、セルの背景色を変更する場合についての質問です。 マクロを実行する度に、セルの背景色を変更するマクロを作成しました。 オレンジ→水色→緑→灰色→無色  という風に変わっていくところまでは できたのですが、これだとマクロを実行するのにセルの状態が無色か、指定した カラーコードで塗りつぶされていないと実行できません。 下記、コードの一番最初の Case で ”背景色がどんな色の場合でも”という条件に したいのですが、どのように記載したらわからずにいます。。。 ---------------------------- Sub 色チェンジ() n0 = ActiveCell.Interior.ColorIndex Select Case n0 Case xlNone   ’ここを”どんな色の場合でも、、、という条件にしたいです。。” Selection.Interior.ColorIndex = 40 Case 40 Selection.Interior.ColorIndex = 34 Case 34 Selection.Interior.ColorIndex = 35 Case 35 Selection.Interior.ColorIndex = 15 Case 15 Selection.Interior.ColorIndex = xlNone End Select End Sub -----------------------------------

  • Excel 条件が4つ以上(年)の自動色分け

    Excel2003を使用しています。 条件が4つ以上ある時のセルの自動色分けですが 自分なりに調べた結果、VBAで Private Sub Worksheet_Change(ByVal Target As Range) With Target.Interior Select Case Target.Text Case "A" .ColorIndex = 3 Case "B" .ColorIndex = 5 Case "C" .ColorIndex = 6 Case "D" .ColorIndex = 10 Case Else .ColorIndex = xlNone End Select End With というように"A""B"という単語で分ける、という方法はわかりましたが、 これを「2010年1月1日~2010年12月31日」までを赤、「2009年1月1日~2009年12月31日」までを青、 というように「年」によって色分けというのはできるのでしょうか? どなたかご教授いただけますと幸いです。よろしくお願いいたします。