1

セルで選択されたテキストに基づいて、Excel でセル範囲 (C2:C7) を色で塗りつぶそうとしています (ドロップダウン メニューがあり、値の 2 つが "SD" と "CS" です)。これまでの私のコードは次のとおりです。

Sub ChangeColor() Dim rCell As Range

With Sheet1
For Each rCell In .Range("C2:C7")

If rCell.Value <= SD Then
rCell.Interior.Color = vbRed
ElseIf rCell.Value <= CS Then
rCell.Interior.Color = vbGreen
Else: rCell.Interior.Color = vbYellow
End If
End With

End Sub

コンパイル エラーがあると言われました: End With without With

私はVBAを始めたばかりなので、誰かが私が間違ったことを教えてもらえますか?

4

2 に答える 2

5

Nextコードを修正するには、ステートメントを挿入する必要があります。行の前 End With。また、インデントを使用してさまざまなコードブロックを視覚的に確認することをお勧めします。あなたの場合、それは次のようになります:

Sub YourSub
    Sheet1で
        For Each rCell In .Range( "C2:C7")
            rCell.Value<=SDの場合Then
                rCell.Interior.Color = vbRed
            ElseIf rCell.Value <= CS Then
                rCell.Interior.Color = vbGreen
            そうしないと
                rCell.Interior.Color = vbYellow
            終了する場合
        次のrCell
    で終わる
サブ終了

また、ここではVBAの代わりに条件付き書式を使用することを検討してください。同じように動作しますが、はるかに簡単です。

于 2013-01-29T12:13:53.147 に答える