• ベストアンサー

このマクロの意味を教えて下さい。

 条件付き書式の色付けで「指定した文字を含む」という条件を 4つ以上つくるということで、下のマクロを探してきたんですが、少しでも意味を 知りたいです。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 1 Then Exit Sub If Selection.Count > 1 Then Exit Sub x = Target.Value c = 0 If x Like "*あ*" Then c = 6 If x Like "*い*" Then c = 4 If x Like "*う*" Then c = 34 If x Like "*え*" Then c = 3 Target.Interior.ColorIndex = c End Sub これを実行したんですが、なぜ結合したセルの場合だけ、文字を 削除した際に色が残るのですか? それを指示している部分と改善策を教えて下さい。

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.3

簡単な説明で解かり難いと思いますが 参考になればと思います Private Sub Worksheet_Change(ByVal Target As Range) '変数の宣言----------------------------------------- Dim rng As Range '複数選択時の処理用 Dim c As Integer '色のインデックス格納用 '複数選択時やセル結合されているものを、単一セルにし処理をする 'Target(実際選択されている、選択範囲)が複数のセルを選択している場合 'rngにセルを一つずつ代入し、選択されているセル数分繰り返し後の処理を行う For Each rng In Target '繰り返しの開始 'rng(セル)の列を調べて、1列目(即ちA列)なら処理を進める If rng.Column = 1 Then '条件分岐(If) '対照の文字が含まれていれば、変数cへ色のインデックス番号をセットする Select Case True '条件分岐(Select Case) Case InStr(rng.Value, "あ"): c = 6 'rngに"あ"が含まれていれば、黄色(インデックス6)に設定 Case InStr(rng.Value, "い"): c = 4 'rngに"い"が含まれていれば、明るい緑色(インデックス4)に設定 Case InStr(rng.Value, "う"): c = 34 'rngに"う"が含まれていれば、薄い水色(インデックス34)に設定 Case InStr(rng.Value, "え"): c = 3 'rngに"え"が含まれていれば、赤色(インデックス3)に設定 Case Else: c = 0 '条件に当てはまらなければ、色なし(塗りつぶしなし:インデックス0)に設定 End Select '条件分岐(Select Case)の終了 '変数cへ設定された色(インデックス番号)をrng(セル)へ反映させる rng.Interior.ColorIndex = c End If '条件分岐(If)の終了 Next rng '繰り返し開始へ戻る及び繰り返しの終了 End Sub 以上です

otoichihr
質問者

お礼

本当に本当に本当~にありがとうございました。 こんなに丁寧に説明していただき感謝します!!! 今まで何も考えずに使ったりしていたマクロも少しづつ 理解していきたいと思います。ありがとうございました!!!

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

参考まで Private Sub Worksheet_Change(ByVal Target As Range) Dim rng, c For Each rng In Target If rng.Column = 1 Then Select Case True Case InStr(rng.Value, "あ"): c = 6 Case InStr(rng.Value, "い"): c = 4 Case InStr(rng.Value, "う"): c = 34 Case InStr(rng.Value, "え"): c = 3 Case Else: c = 0 End Select rng.Interior.ColorIndex = c End If Next rng End Sub 以上

otoichihr
質問者

お礼

 すごい感動です。うまくできました。 マクロってすごいですね。ただ何がどうなってんだか?? すみませんが、質問の中にもあったc=0の 0って何を意味 してるんですか?ど素人ですみません・・・・・・。

すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

結合したセルの場合にはSelection.Countが1以上になります。そのためにその後のマクロが作用しなくなります。 改善するためにはIf Selection.Count > 1 Then Exit Subを削除すればよいでしょう。

otoichihr
質問者

お礼

さっそくの回答ありがとうございます。 試したところエラーがでてしまいました・・・・。

すると、全ての回答が全文表示されます。

関連するQ&A