如何使用excel发送电子邮件VBA
问题描述:
我有列A到H中的数据。列A中的数据是电子邮件地址。我在另一个单元格中放了一个复选框。我想要的是当我勾选复选框时,它会将电子邮件发送到位于最后一行A列中的电子邮件帐户。但下面的代码仅适用于单元格A1。如何使用excel发送电子邮件VBA
Private Sub CheckBox1_Click()
Dim Email As String
Row = 1
Email = Sheet1.Cells(Row, 1)
Do Until Sheet1.Cells(Row, 1) = ""
Row = Row + 1
Loop
Dim OutApp As Object, OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = Email
.Subject = score
.HTMLBody = "This is a contain of Email Message"
.Send
End With
On Error GoTo 0
Set OutMail = Nothing
End Sub
答
在下面的部分,在这里你是从细胞试图让最后一排,然后将邮箱:
Row = 1
Email = Sheet1.Cells(Row, 1)
Do Until Sheet1.Cells(Row, 1) = ""
Row = Row + 1
Loop
你从第一行采取Email
,和之后Do Until
您正在检查最后一行的循环,但未修改的Email
变量。
解决:没有必要有一个循环,找到最后一行在列A一个有效的电子邮件地址,你可以简单地用下面的下面几行找到它:
Dim LastRow As Long
' get last row with data in Column A (don't skip blank cells in the middle)
LastRow = Sheet1.Range("A1").End(xlDown).Row
Email = Sheet1.Range("A" & LastRow).Value
休息你的代码工作得很好。
+0
尊敬的专家,非常感谢您的知识分享 – taufik
+0
@taufik请标记为答案(点击我的答案旁边的** V **) –
我的猜测是你搞乱了语句的顺序:首先你需要'直到...循环'来找到最后一行,然后才分配'Email = ...'。您当前的代码无条件地从R1C1中选择电子邮件。 –