2014-09-25 77 views
1

我有3个If语句,无论“dept”的值如何,总是会导致错误。
如果我删除两个If语句,只剩下一个,它就可以工作。我究竟做错了什么?多个VBA如果或者陈述

Dim Dept As String 
Dim wb As Workbook 

Set wb = ThisWorkbook 


Dept = Application.WorksheetFunction.VLookup(Name, Sheet1.Range("F10"), 1) 

If Dept = "Dept1" Or "Dept2" Then 
wb.SendMail "email address", Subject:="Subject heading 1" 

End If 

If Dept = "Dept3" Or "Dept4" Then 
wb.SendMail "email address", Subject:="Subject heading 2" 

End If 

If Dept = "Dept5" Or "Dept6" Then 
wb.SendMail "email address", Subject:="Subject heading 3" 

End If 
+0

我已经编程了20年以上,刚刚从你那里学到了一些新的东西'Application.WorksheetFunction.VLookup(...'。不知道内置的公式函数是可用的像那谢谢! – DarrenMB 2014-09-25 15:08:31

回答

2

你不能在这里使用或者像这样。你必须重复变量:

If Dept = "Dept1" Or Dept = "Dept2" Then 
wb.SendMail "email address", Subject:="Subject heading 1" 

End If 

If Dept = "Dept3" Or Dept = "Dept4" Then 
wb.SendMail "email address", Subject:="Subject heading 2" 

End If 

If Dept = "Dept5" Or Dept = "Dept6" Then 
wb.SendMail "email address", Subject:="Subject heading 3" 

End If 

或者你可以使用选择案例:

Select Case Dept 
    case "Dept1", "Dept2" 
wb.SendMail "email address", Subject:="Subject heading 1" 
case "Dept3", "Dept4" 
wb.SendMail "email address", Subject:="Subject heading 2" 
case "Dept5", "Dept6" 
wb.SendMail "email address", Subject:="Subject heading 3" 

End Select 
+0

谢谢你,现在都在工作。 – Bobby 2014-09-26 14:13:29

0

我认为Dept是一个字符串变量。

然后代码应该是这样的:

If Dept = "Dept1" Or Dept = "Dept2" Then 
    wb.SendMail "email address", Subject:="Subject heading 1" 
End If 

VBA interprtates你的布尔条件为 (Dept = "Dept1") or CBool("Dept2") VBA propably有困难时期你的字符串转换成一个布尔值。

0

你尝试加入

If Dept = "Dept1" Or Dept = "Dept2" Then

也许因为还是部门,它始终是真实的。所有的中频条件得到执行