我有一个共享工作簿,其中有一列使用数据验证列表。如果YES
选中,我希望它向某个部门发送电子邮件,提示他们查看工作簿。
我已经走到这一步了
Sub SendMail()
If Range("G10:G250") = "YES" Then
With CreateObject("Outlook.Application").createitem(0)
.To = "p***.h***@****.com"
.Subject = "Update from Facility Manager"
.Body = "Hi Property Services, " & vbNewLine & vbNewLine & " Please follow the link to see update on Facilty Management Tracker"
.Send
End With
End If
End Sub
但我一直收到type mismatch
错误。
答案1
询问错误时,指出错误发生的确切位置非常重要。在代码开头的代码窗格边缘放置一个断点,然后使用 逐行执行F8。
在您的代码中,错误“类型不匹配”发生在以下行
If Range("G10:G250") = "YES" Then
跨越多个单元格的范围不能具有字符串值。不清楚您是否打算遍历该范围内的所有单元格,并在一个或多个单元格显示“YES”时发送一封邮件。以下修改后的代码会在范围内查找“YES”,如果找到,则设置布尔值并停止进一步查找。然后,如果设置了布尔值,则准备并发送电子邮件。
Private Sub SendMail()
Dim cell As Range
Dim y As Boolean
'If Range("G10:G250").Value = "YES" Then
y = False
For Each cell In Range("G10:G250")
If cell.Value = "YES" Then
y = True
Exit For
End If
Next
If y Then
With CreateObject("Outlook.Application").createitem(0)
.To = "p***.h***@****.com"
.Subject = "Update from Facility Manager"
.Body = "Hi Property Services, " & vbNewLine & vbNewLine & " Please follow the link to see update on Facilty Management Tracker"
.Send 'during debugging you can use .Display instead (to avoid filling someones mailbox)
End With
End If
End Sub