Vba Excel宏是否消息框,是和否的不同方向

Vba Excel宏是否消息框,是和否的不同方向,vba,excel,Vba,Excel,用户在YesNo消息框中有两个选项。如果否,它将执行特定的筛选序列,但如果用户对消息框问题回答“是”,我希望筛选另一列。目前,在“Else”中,我得到一个错误,如果我去掉“Else”,那么“Compile error:赋值左侧的函数调用必须返回Variant或Object”,并且后面的代码,宏运行平稳,但只有在用户选择No时才会过滤 If MsgBox("Is This Item Catch Weight?", vbYesNo) = vbNo Then retval = InputBox

用户在YesNo消息框中有两个选项。如果否,它将执行特定的筛选序列,但如果用户对消息框问题回答“是”,我希望筛选另一列。目前,在“Else”中,我得到一个错误,如果我去掉“Else”,那么“Compile error:赋值左侧的函数调用必须返回Variant或Object”,并且后面的代码,宏运行平稳,但只有在用户选择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

这里发生了一些事情<代码>:VBA代码中的新行字符

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

Else
   MsgBox("Is This Item Catch Weight?", vbYesNo) = vbYes
这不是你想要的

如果结尾处有,则还有一个额外的
结尾。去掉那个

调用消息框多次出现可能也不是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
,除非您确定这是您想要的