2017-05-03 16 views
1

私はVBAで利用できる3つの異なるサブを持っており、それらをサブクラスを使用して呼び出すことを望んでいます。 いずれかのサブを条件に基づいて呼び出す必要がありますが、サブが呼び出されることはありません!セルの値に基づいてサブを呼び出す

Sub rush_hour() 
    If Range("B2").Value = "Greater Than" Then 
     Call call_rus_greater 
    ElseIf Range("B2").Value = "Less Than" Then 
     Call call_rus_less 
    ElseIf Range("B2").Value = "Equals" Then 
     Call call_rus_equals 
    End If 
End Sub 
+0

セルB2には別のものがある可能性があるからです。 B2には何がありますか?また、呼び出されたサブシステムの1つを共有します。これまでのところ、提供された情報の問題点を把握することはまずありません。 – Tehscript

+0

B2は、 "より大きい"、 "より小さい"、 "等しい"を含むドロップダウンです –

+0

範囲をワークシートに完全に限定する必要があります。方法を確認するには、[VBAベストプラクティス - 決してワークシートを想定しない](http://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices/9218/never-assume-the-worksheet)をお読みください。 –

答えて

3

ドロップダウンの大文字と小文字は、コードの内容と異なる場合があります。また、ドロップダウンのどこかに空白があるか、Range( "B2")が指定されているシートが、サブの呼び出し時にアクティブなシートではない場合もあります。これらの可能性はすべて以下のコードでは解消されています。

Sub rush_hour() 

    Select Case Trim(LCase(ActiveSheet.Range("B2").value)) 
     Case "greater than" 
      call_rus_greater 
     Case "less than" 
      call_rus_less 
     Case "equals" 
      call_rus_equals 
     Case Else 
      MsgBox "Unexpected value in cell B2" 
    End Select 
End Sub 
+0

@Peh oops、私は私の視力が以前とは違うと思っています;) –

関連する問題