我无法解决通过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"那一行。我需要这个也可以扩展,所以我可以下去几行,只发送那封邮件。
答案 0 :(得分:0)
我只处理标题中的错误,我还没有查看其余代码或者它是否符合您的要求。你的问题就在这一行
LCase(Cells(cell.Row, "N").Value) = "open" Then
Cells()期望一个行号和一个列号,但你使用的是一个字符串(" N")作为列号,如果你想要列" N&,那就是类型不匹配#34;然后像这样使用数字14
LCase(Cells(cell.Row, 14).Value) = "open" Then