2017-09-05 20 views
0

私は、セルの配列をループ全体の文字列に変換するコードを持っています。セルに特定の文字列が含まれていればtrueをブール型変数に正しく置きますが、これらの変数でターゲットとするifステートメントはスキップされ、最後のelseステートメントのみが実行されます。私はなぜこれがどうなるのか分かりませんし、if文が変数を真と見なしていないかもしれない理由について、どんなインプットも好きです。前もって感謝します。ブールとIfステートメント

trimmedValX = Trim$(ur(r, m(6))) *creates the string 
     Found1 = InStr(trimmedValX, "still sold")  *checks to see if string is in the created string, if it is variable is set as True 
     Found2 = InStr(trimmedValX, "Still sold") 
     Found3 = InStr(trimmedValX, "Discontinued") 
If Found3 = True Then 
    cell1.Interior.Color = rColor 
ElseIf Found1 = True or Found2 = True Then 
    cell1.Interior.Color = gColor 
Else 
    cell1.Interior.Color = mColor 
End If 

答えて

0

私はすべての

trimmedValX = Trim$(ur(r, m(6))) 

    With cell1.Interior 
     If UCase(trimmedValX) Like "*DISCONTINUED*" Then 
      .Color = rColor 
     ElseIf UCase(trimmedValX) Like "*STILL SOLD*" Then 
      .Color = gColor 
     Else 
      .Color = mColor 
     End If 
    End With 
+0

でInStr関数whithout何かを示唆している私のニーズのために働くのコードを得たことをありがとうございます。 – FrenchP

2

InStrブール値を返しませんが、代わりに部分文字列の開始位置を返します。これを代わりに使用してみてください。 InStr Reference

trimmedValX = Trim$(ur(r, m(6))) *creates the string 
     Found1 = InStr(trimmedValX, "still sold")  *checks to see if string is in the created string, if it is variable is set as True 
     Found2 = InStr(trimmedValX, "Still sold") 
     Found3 = InStr(trimmedValX, "Discontinued") 
If Found3 > 0 Then 
    cell1.Interior.Color = rColor 
ElseIf Found1 > 0 or Found2 > 0Then 
    cell1.Interior.Color = gColor 
Else 
    cell1.Interior.Color = mColor 
End If 
関連する問題