2017-05-24 41 views
0

Excelの特定の列を検索して特定の文字列を検索し、セルの背景色が変更された文字列と一致する条件文を作成しようとしています。ExcelのVBAコードを使用した条件付きのケースステートメント

セルが空であるか、文字列と一致しない場合は、セルに何も起こりません。

今、私は列の各セルを繰り返し処理し、比較する可能性のあるすべての文字列値をチェックしようとしていますが、動作していないようです。初めての後、あなたの反復を停止しExit For

Sub interiorsStatus() 

Dim sh As Worksheet 
Dim rw As Range 


Set sh = ActiveSheet 

For Each rw In sh.Rows 
Select Case sh.Cells(rw.Row, "E").Value 

    Case "DELIVERED" 
     result = Range(rw.Row).Interior.ColorIndex = 33 

    Case "READY TO ORDER" 
     result = Range(rw.Row).Interior.ColorIndex = 36 

    Case "ORDERED" 
     result = Range(rw.Row).Interior.ColorIndex = 39 

    Case "DELIVERED" 
     result = Range(rw.Row).Interior.ColorIndex = 43 

    Case "EXISTING" 
     result = Range(rw.Row).Interior.ColorIndex = 40 

    Case "ON HOLD" 
     result = Range(rw.Row).Interior.ColorIndex = 48 

    Case "GENERAL CONTRACTOR" 
     result = Range(rw.Row).Interior.ColorIndex = 2 

    Case "AV & BLINDS" 
     result = Range(rw.Row).Interior.ColorIndex = 15 

    Case "MILLWORK" 
     result = Range(rw.Row).Interior.ColorIndex = 22 

    Case Else 
     result = """" 

    End Select 

    Exit For 

     Next rw 

    End Sub 
+3

'rw.Interior.ColorIndex = 22'が行い、' select case rw.cells(1,5) ' –

+2

なぜマクロの代わりに条件付き書式を使用しないのですか? – BruceWayne

+0

'For Each rw in sh.Rows'は' For Each rw In sh.USEDRANGE.Rows'にするか、1,048,576行を調べます。最後の空白でない行を見つける他の方法があります。 – Jeeped

答えて

2

ライン:

は、ここに私の現在のコードです。私はこれがあなたの望むものではないと思います。あるいは、case文の中に記述する必要があります。

0
result = Range(rw.Row).Interior.ColorIndex = 40 

これは割り当てです。代入演算子の右にある式の値をresultに代入します。

Range(rw.Row).Interior.ColorIndex = 40 

あなたが代入演算子の右側に、それはブール式だとしていた場合、それはTrueまたはFalseに評価されます。したがってはColorIndex40の場合はTrue、そうでない場合はFalseとなります。

そして、resultで何も処理されません。

あなたが実際にColorIndexを設定することを意図している場合、ColorIndexを割り当て、割当指示にブール式をオンにするresult =割り当てを削除。

もう1つ問題があります。最初の繰り返しを終了する直前にループを明示的に終了します。実際にループしたい場合は、それを削除してください。Exit For

関連する問題