2010-11-23 9 views
2

私のスプレッドシートは、このように設定されて変化した場合:VBAコード列Aの値が

私は、列Aと私は必要な列Bのジョブのタイトルの対応リストにあるジョブ番号のリストを持っています特定のジョブ番号のすべての行が色分けされるようにします。行2~4は列Aに「3705」を有するので、これらの行は赤色に着色される。行5 & 6は列Aに4169を持ち、緑色に着色されています。 7〜10行目はA列に5518を持ち、赤色(赤と緑の交互)に色付けされます。

私は上記の自動/マクロを使用してVBAコードを与えることはできますか?

ありがとうございます!

答えて

3
Sub colorize() 

Dim r As Long, val As Long, c As Long 

    r = 1 
    val = ActiveSheet.Cells(r, 1).Value 
    c = 4 '4 is green, 3 is red ' 

    For r = 1 To ActiveSheet.Rows.Count 
     If IsEmpty(ActiveSheet.Cells(r, 1).Value) Then 
      Exit For 
     End If 

     If ActiveSheet.Cells(r, 1).Value <> val Then 
      If c = 3 Then 
       c = 4 
      Else 
       c = 3 
      End If 
     End If 

     ActiveSheet.Rows(r).Select 
     With Selection.Interior 
      .ColorIndex = c 
      .Pattern = xlSolid 
     End With 

     val = ActiveSheet.Cells(r, 1).Value 
    Next 

End Sub 

あなたはマクロが列Aのセルが値を変更するたびに起動するようにしたい場合は、関連するワークシートのモジュールに以下を追加します。

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Intersect(Target, Range("A:A")) Is Nothing Then 
     Exit Sub 
    End If 

    colorize 

End Sub 
+1

DIMを使用する場合は、変数ごとに変数タイプを指定する必要があります。あなたが持っている方法では、cを整数にしか設定しません。 rとvalの両方が型バリアントになります。これはVBAのVarTypeを使って確認できます。 –

+0

@残念です、ありがとう、私はそれを忘れてしまいました。 – Vicky

+0

Vicky、あなたが私に与えたトップコード(長いもの)を実行しようとすると、「ランタイムエラー '13':タイプが一致しません」Remnantが話していたことが原因ですか?もしそうなら、私はそれをどのように修正するのですか?また、私があなたに与えた2番目のコード(短いもの)を実行しようとしたとき、それは実行するオプションとして出てこない(代わりに私が記録した他のいくつかのマクロを表示します)。申し訳ありませんが、VBAコードなどが新しくなっています。 ..あなたの助けをありがとう(Remnant&Vicky)! – Jack

2

これが唯一のExcelの数式と条件付き書式を使用して行うことができます列を追加することができます。赤と緑を交互に使用することはできませんが、色と色は交互に使用できない場合があります。

Alternate Excel Row Color Based on Content

関連する問題