2016-06-14 6 views
0

YesNoメッセージボックスには2つのオプションがあります。いいえの場合は、特定のフィルタシーケンスを実行しますが、ユーザーがメッセージボックスの質問に対して「はい」と答えた場合は、別の列をフィルタリングします。現在、 "Else"では、 "コンパイルエラー:代入の左側の関数呼び出しはVariantまたはObjectを返さなければなりません"というエラーが表示されます。 "Else"とその後のコードを取り出すと、ユーザーがいいえを選択したときにフィルタリングするだけです。ExcelマクロYes Noメッセージボックス、YesとNoの異なる指示

If MsgBox("Is This Item Catch Weight?", vbYesNo) = vbNo Then 
    retval = InputBox("Please Enter PO Cost") 
    ActiveSheet.Range("$A$1:$CL$293662").AutoFilter Field:=71,   Criteria1:="=" & retval 
    retval = InputBox("Please Enter Net Weight") 
    ActiveSheet.Range("$A$1:$CL$293662").AutoFilter Field:=41, Criteria1:="=" & retval 
Else: MsgBox("Is This Item Catch Weight?", vbYesNo) = vbYes 
    retval = InputBox("Please Enter PO Cost") 
    ActiveSheet.Range("$A$1:$CL$293662").AutoFilter Field:=71, Criteria1:="=" & retval 
End If 
End If 

答えて

2

ここではいくつかのことが起こっています。 VBAコードで:改行文字はそう

Else: MsgBox("Is This Item Catch Weight?", vbYesNo) = vbYes 

のような行が実際に

あなたが望むものではありません
Else 
    MsgBox("Is This Item Catch Weight?", vbYesNo) = vbYes 

と同じです。

最後にEnd Ifもあります。それを取り除く。

メッセージボックスを複数回表示することは、おそらくoyuが望むものではありません。おそらく、メッセージボックスを表示し、結果を取得してから何かをしたいと思うでしょう。

Dim response As VbMsgBoxResult 
response = MsgBox("Is This Item Catch Weight?", vbYesNo) 
If response = vbNo Then 
    'do stuff for yes 
ElseIf response = vbYes Then 
    ' do stuff for No 
End If 

あなたはそれはあなたが望むものだと確信していない限り、私はまたActiveSheetを使用しないことをお勧めしたいです。

+0

美しい、ありがとう、ブラッド! – cam

関連する問題