【初月無料キャンペーン中】gooドクター

VBAでセルに入力された文字列が連続した場合にセルの色を変更する方法を模索しています。

【例】
A1:○
A2:○
A3:○
A4:○
A5:○
A6:○
A7:✕
A8:✕
A9:○

↑のように「6つ以上同じ文字列が入力されている場合に、セルの色を赤にする」ことがVBAでできる場合はその方法をご教示いただけますでしょうか
よろしくお願いいたします。

gooドクター

A 回答 (3件)

こんばんは



VBAでのご質問ですが、いちいちVBAを実行しなくても「条件付き書式」を利用すれば、入力時に自動的に色が変わるようになります。
VBAであることが必要な場合には、以下は無視してください。


A列を選択し、A1セルがアクティブな状態で、「ホーム」-「条件付き書式」から「数式を使用して~~」を選択し、数式欄に
=AGGREGATE(14,6,COUNTIF(OFFSET(A1,-(ROW(A$1:A$6))+1,,6),A1),1)=6
を入力して、書式で塗り色を設定することで可能になります。
    • good
    • 1

#1の 修正です。


If chk >= 5 Then
.Range(.Cells(r, 1), .Cells(r + chk, 1)).Interior.Color = RGB(255, 0, 0)
End If
7つ以上で繰り返し実行されるので、この場所は、良くないですね 

考えるとここですね。Elseの後が良いです。
Else
If chk >= 5 Then
.Range(.Cells(r, 1), .Cells(r + chk, 1)).Interior.Color = RGB(255, 0, 0)
End If
chk = 0
r = 0

すみません
    • good
    • 0

こんにちは


なんか、適切なメソッドがあったような気がしますが
恥ずかしながら、べたに処理を進めると下記のような感じでどうでしょう?
Sub a()
Dim chk As Long, i As Long, r As Long
With ActiveSheet
For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
If chk = 0 Then r = i
If .Cells(i, 1) <> "" Then
If .Cells(i, 1) = .Cells(i + 1, 1) Then
chk = chk + 1
If chk >= 5 Then
.Range(.Cells(r, 1), .Cells(r + chk, 1)).Interior.Color = RGB(255, 0, 0)
End If
Else
chk = 0
r = 0
End If
End If
Next i
End With
End Sub


.Range(.Cells(r, 1), .Cells(r + chk, 1)).Interior.Color = RGB(255, 0, 0)
処理を重ねるの嫌だけれど、、取敢えず。改造してみてください。
    • good
    • 0

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

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

gooドクター

このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング