"运行时错误' 13':类型不匹配。"什么时候没有电子邮件地址

时间:2015-11-04 16:21:59

标签: excel vba excel-vba email

我无法解决通过Excel发送电子邮件时发生的错误。此时它被设置为当下拉列表标题为"打开"在专栏" N"它会向某个特定的人发送一封电子邮件,其电子邮件地址会显示在" M" (我在" J"中选择用于发送电子邮件的名称;并在" M"中创建地址。我认为问题可能是它检查了我所拥有的每一行" Open" in" N"因此,当没有电子邮件地址时,它会引发"运行时错误' 13':类型不匹配。"我目前有以下代码:

在表1(问题表)中:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("N3")) Is Nothing Then
Select Case Range("N3")
    Case "Open": Macro1
End Select
End If
End Sub

我的模块是:

Option Explicit

Sub Macro1()     Dim OutApp As Object     昏暗的OutMail作为对象     Dim cell As Range

Application.ScreenUpdating = False
Set OutApp = CreateObject("Outlook.Application")

On Error GoTo cleanup
For Each cell In Columns("M").Cells
    If cell.Value Like "?*@xyz.com" And _
       LCase(Cells(cell.Row, 14).Value) = "open" Then

        Set OutMail = OutApp.CreateItem(0)
        On Error Resume Next
        With OutMail
            .To = cell.Value
            .Subject = "Open Issue"
            .Body = "Dear " & Cells(cell.Row, "J").Value _
                    & vbNewLine & _
                    "Issue raised: " & Cells(cell.Row, "C").Value _
                    & vbNewLine & _
                    "Regards"
            'You can add files also like this
            '.Attachments.Add ("C:\test.txt")
            .Display  'Or use Display
        End With
        On Error GoTo 0
        Set OutMail = Nothing
    End If
Next cell

cleanup:
Set OutApp = Nothing
Application.ScreenUpdating = True
End Sub

基本上我想要它做的是能够只发送一个电子邮件到地址,在" Open"下拉选自例如" Open"在#34; N"栏中选择然后只会发送电子邮件到" M"那一行。我需要这个也可以扩展,所以我可以下去几行,只发送那封邮件。

1 个答案:

答案 0 :(得分:0)

我只处理标题中的错误,我还没有查看其余代码或者它是否符合您的要求。你的问题就在这一行

LCase(Cells(cell.Row, "N").Value) = "open" Then

Cells()期望一个行号和一个列号,但你使用的是一个字符串(" N")作为列号,如果你想要列" N&,那就是类型不匹配#34;然后像这样使用数字14

LCase(Cells(cell.Row, 14).Value) = "open" Then