Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多个VBA If或语句_Vba_Excel - Fatal编程技术网

多个VBA If或语句

多个VBA If或语句,vba,excel,Vba,Excel,我有3条If语句,不管“dept”的值是多少,都会得到true。 如果我删除两条If语句,只留下一条,它就可以工作了。我做错了什么 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

我有3条If语句,不管“dept”的值是多少,都会得到true。
如果我删除两条If语句,只留下一条,它就可以工作了。我做错了什么

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

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

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:

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

我假设
Dept
是一个字符串变量

那么代码应该如下所示:

If Dept = "Dept1" Or Dept = "Dept2" Then
   wb.SendMail "email address", Subject:="Subject heading 1"
End If
VBA将布尔条件解释为
(Dept=“Dept1”)或CBool(“Dept2”)
VBA可能很难将字符串转换为布尔值。

是否尝试添加
如果是Dept=“Dept1”或Dept=“Dept2”,那么
我已经编程超过20年了,刚刚从你那里学到了一些新的东西。WorksheetFunction.VLookup(…。我不知道内置的公式函数是这样的。谢谢!