2017-06-04 11 views
0

私はこの1つに本当に困惑しています。すでにネットを検索しましたが、特定のケースに関連する回答が見つかりませんでした。私は次のコードを持っています:VBA Selectケースは選択なしで実行されます

Dim CE_res As Integer 


For Index = 1 To 7 

Status = "" 
CE_res = CInt(Worksheets("werkblad").Range("CEres" & Index).Value) 

If CE_res = 0 Then 
' Everything ok 
    Status = "Pass" 

Else 

    Select Case CE_res 

     Case CE_res < -1500 
      Status = "Invalid kV Value" 

     Case CE_res < -999 
      Status = "No kV Value" 

     Case CE_res < -399 
      Status = "kV too high" 

     Case CE_res = 0 
      Status = "kV too low" 

     Case CE_res > 500 
      Status = "Invalid mAs Value" 

     Case CE_res > 49 
      Status = "mAs Value missing" 

     Case CE_res > 9 And CE_res < 50 
      Status = "Adapt Target" 

     Case CE_res > 200 
      Status = "Adapt Filter" 

     Case Else 
      Status = "No Selection" 

    End Select 

End If 

CE_resは50に設定されていますが、常にCase Elseが選択されています。範囲( "CEres" &インデックス)。確かに整数に値を設定します。 しかし、Select Caseを正しく実行していないようです。 CE_res> 49をCE_res = "50"に変更しましたが、これもうまくいきませんでした。

今、私は何が間違っている可能性が考えられていません。

+0

です。変数名はCaseステートメントに入れません。 'Case 0'または' Case Is <-1500'です。 –

答えて

2

あなたは、例えば、ケースステートメントのために、私は> 200> 49に移動しなければならなかった

Dim CE_res As Integer 


For Index = 1 To 7 

Status = "" 
CE_res = CInt(Worksheets("werkblad").Range("CEres" & Index).Value) 

If CE_res = 0 Then 
' Everything ok 
    Status = "Pass" 

Else 

    Select Case CE_res 

     Case < -1500 
      Status = "Invalid kV Value" 

     Case < -999 
      Status = "No kV Value" 

     Case < -399 
      Status = "kV too high" 

     Case 0 ' or possibly Case < 0 ???? 
      Status = "kV too low" 

     Case > 500 
      Status = "Invalid mAs Value" 

     Case > 200 
      Status = "Adapt Filter" 

     Case > 49 
      Status = "mAs Value missing" 

     Case > 9 
      Status = "Adapt Target" 

     Case Else 
      Status = "No Selection" 

    End Select 

End If 

注意、のそれ以外の値を正しい構文を使用していない、230は> 49にマッチしたため、到達したことがないだろうあなたの> 200CE_res< -1500た場合


あなたはそれを持っていた方法は、声明Case CE_res < -1500はテストします。そうであれば、Trueが返され、case文のオブジェクト(つまりCE_res)と比較され、一致した場合(一致しない場合)Select文のその脚が実行されます。あなたがそれらを正しく注文するか、意図したとおり、彼らは動作しませんを確認する必要があり<> = comparitorsのご使用に起因する他のメンバー、で述べたように

+0

あなたは少し疲れているかもしれません。もしあなたが 'If CE_res = 0'を持っていて、' Select Case': 'Case 0'の中にあり、' Status = "kV too low"(POが持っていた)の後。彼は 'CE_res = 0'を結果が「合格」か「kV過小か」と判断する必要があります。 –

+0

@ShaiRadoええ - 私はそれについて疑問に思っています。 – YowE3K

+0

私は分かりません、POだけがここで達成したいことを知っています –

0

。非常に具体的な値を使用している場合は、TOを使用してより具体的な値にする方がよいでしょう。

Select Case 
    Case -1000 TO -1500 
    'Do This 
    Case -400 TO -999 
    'Do That 
    Case -1 TO -399 
    'Do Something Else 
End Select 

あなたがこれを行う場合はあいまいで、それを読むために、操作順序は重要ではありません簡単に何をだんどのようにようがありません。

すでにSelect Case CE-res行に変数を指定しているので、それぞれのCaseステートメントにを追加する必要はありません。正しい構文は

Select Case CE_res 
    Case <-1500 
    Status = "Invalid kV Value" 
End Select 
関連する問題