2017-05-25 18 views
0

列Lの値に基づいて色を変更するマクロを作成しようとしています。列LのセルがYESの場合、Hightlight Column Bセルは赤で表示されます。ただし、以下のマクロは機能しません。実行されますが、何もしません。Excel VBA - セルの色の変更

Sub ColorMeElmo() 
    Dim i As Long, r1 As Range, r2 As Range 
    For i = 2 To 5 
    Set r1 = Range("L" & i) 
    Set r2 = Range("B" & i & ":B" & i) 
    If r1.Value = "YES" Then r2.Interior.Color = vbRed 
    Next i 
    End Sub 
+3

なぜ条件付き書式を使用していませんか? –

+2

私のために働く。あなたはL2:L5の範囲のどこにでも "はい"を持っていますか? (注:「はい」だけではなく、実際には「はい」) – YowE3K

+1

HI Scott、私はユーザーに提供するつもりで、マクロの実行が簡単になると思いました。 – user7675421

答えて

1
Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim CCell As Range 
    Dim sht As Worksheet 
    Set CCell = Range("L:L") 
    Set sht = Worksheets("SheetName") 
    If Target.Count = 1 Then 
     If Not Application.Intersect(CCell, Range(Target.Address)) _ 
      Is Nothing Then 
       If Target.Value = "YES" Then 
        sht.Cells(Target.Row, 2).Interior.Color = RGB(255, 0, 0) 
       End If 
     End If 
    End If 
End Sub 
1

これをシートに入れます。

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim CCell As Range 
    Dim sht As Worksheet 
    Set CCell = Range("L:L") 
    Set sht = Worksheets("Sheet1") 'EDIT 
    If Target.Count = 1 Then 
     If Not Application.Intersect(CCell, Range(Target.Address)) _ 
      Is Nothing Then 
       If Target.Value = "YES" Then 
        sht.Cells(Target.Row, 2).Interior.Color = RGB(255, 0, 0) 
       End If 
     End If 
    End If 
End Sub 
+2

ちょうどヒント - 'Target.Value =" YES "'を使って 'Target'に複数のセルがあるかどうかを調べる前に注意してください - 配列を文字列と比較しようとするとVBAエラーになります。例えば。ユーザが 'L5:L10'セルをコピー/貼り付けなどで変更した場合、クラッシュします。 (ユーザーが私たちにしたいことをしただけで人生はもっと簡単になるだろう!) – YowE3K

+0

チップをありがとう、私はそれを修正した;) – UGP

関連する問題