• ベストアンサー

マクロについて教えてください

A1~K1のセルにA・B・C・Dとアルファベットが並んでいます。 その中でBが3連続以上並んでるセル(3連続なら3とものセル)に色をつけます。 それをB2~K2 C3~K3と横へ動いていくように繰り返し行うやり方を教えて下さい。 宜しくお願いします。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.4

失礼..orz >=OR(PHONETIC(IV3:B3:)="BBB",PHONETIC(A3:C3)="BBB",PHONETIC(B3:D3)="BBB") =OR(PHONETIC(IV3:B3)="BBB",PHONETIC(A3:C3)="BBB",PHONETIC(B3:D3)="BBB") 余計な『:』が入ってました。 ついでに。 Sub try2の対象範囲をB3:AF16に修正して対処する場合は ...Interior.Color = vbRed の替わりに ...Interior.ColorIndex = 34 などとしてください。 セル背景色の設定などは[マクロの記録]でわかるはずです。

isikawaK
質問者

お礼

ありがとうございます。 思うようにやれました。 またつまったときはよろしくお願いします。

その他の回答 (3)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.3

>マクロではなく条件付き書式で可能です。 B3:AF16を選択して、B3がアクティブになっている状態で           ~~~~~~~~~~~~~~ メニュー[書式]-[条件付き書式]で [数式が ▼] =OR(PHONETIC(IV3:B3:)="BBB",PHONETIC(A3:C3)="BBB",PHONETIC(B3:D3)="BBB") 上記数式をコピー&ペーストし、 [書式]ボタンをクリックして[パターン]タブで好きな色を設定してください。

isikawaK
質問者

お礼

条件付き書式でも可能なのですが、マクロを組む練習をしております。 つまらない質問ですいませんでした。

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

>それをB2~K2 C3~K3と横へ動いていく この説明は間違っていませんか? 1行下に行くと同時に基点が右にずれて範囲も狭まってくるという説明になってます。 そうではなくて、単純にB3:F16の範囲内でBが3連続以上続くセルをチェックしたいなら Sub try2()   Dim rng As Range   Dim rw As Range   Dim r  As Range   Dim cnt As Long   Set rng = ActiveSheet.Range("B3:F16")   For Each rw In rng.Rows     rw.Interior.ColorIndex = xlNone     For Each r In rw.Cells       If r.Value = "B" Then         cnt = cnt + 1       Else         If cnt > 2 Then           r.Offset(, -cnt).Resize(, cnt).Interior.Color = vbRed         End If         cnt = 0       End If     Next     If cnt > 2 Then       rw.Cells(rw.Cells.Count).Offset(, -cnt + 1).Resize(, cnt).Interior.Color = vbRed     End If     cnt = 0   Next   Set rng = Nothing End Sub こうなります。 あるいは Sub try3()   With ActiveSheet.Range("B3:F16").FormatConditions     .Delete     .Add(Type:=xlExpression, _        Formula1:="=OR(PHONETIC(RC[254]:RC)=""BBB""," & _               "PHONETIC(RC[-1]:RC[1])=""BBB""," & _               "PHONETIC(RC:RC[2])=""BBB"")" _       ).Interior.Color = vbRed   End With End Sub マクロではなく条件付き書式で可能です。 [ 数式が ] =OR(PHONETIC(IV3:B3:)="BBB",PHONETIC(A3:C3)="BBB",PHONETIC(B3:D3)="BBB")

isikawaK
質問者

お礼

範囲が間違っておりました。

isikawaK
質問者

補足

何度もすみません。 その説明も間違っております。 全体がB3~AF16でした。それをB3~AF3、B4~AF4、B5~AF5・・・B16~AF16まで横にチェックしていくようにします。3連続以上に色を付けたいのですが、細かい色の指定(特に薄い色)はできますか? vbRedの他の種類が少なかったものですから、255、255、255の型式はできますか?

  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

ExcelVBAでのやり方で、という認識で良いですか? サンプルとしては Sub try()   Dim rs As Range '基点A1   Dim re As Range '基点K1   Dim r  As Range   Dim i  As Long   Dim cnt As Long '連続回数記憶用   With ActiveSheet     Set rs = .Range("A1")     Set re = .Range("K1")   End With   For i = 0 To 9     With Range(rs.Offset(i, i), re.Offset(i, 1))       .Interior.ColorIndex = xlNone       For Each r In .Cells         If r.Value = "B" Then           cnt = cnt + 1         Else           If cnt > 2 Then             Range(r.Offset(, -cnt), r.Offset(, -1)).Interior.Color = vbRed           End If           cnt = 0         End If       Next     End With   Next   Set rs = Nothing   Set re = Nothing End Sub こんな感じになりますが 変数に対する理解とFor Nextステートメント、Offsetプロパティ、など VBAの基礎を理解している事が前提です。 その辺りは大丈夫ですか? http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_010.html

isikawaK
質問者

お礼

範囲が間違っておりました。

isikawaK
質問者

補足

はい。 早速やってみたのですが、うまくいきません。 すいません補足となりますが、全体の範囲がB3~F16なのですが、その中にシフト関係なのですが、アルファベットがバラバラに並んでいます。Bが3つや4つ5 つと連続して並んでいる所に色がつきません。 難しいです。マクロ初心者ですいません。

関連するQ&A