用户在YesNo消息框中有两个选项。如果否,它执行一定数量的过滤器,但如果用户对消息框问题回答“是”,我想过滤另一列。目前,在" Else",我得到的错误是"编译错误:赋值左侧的函数调用必须返回Variant或Object"如果我取出" Else"及其后面的代码,宏会顺利运行,但只有当用户选择否时才会过滤。
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
答案 0 :(得分: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
,除非你确定这是你想要的。