如何使用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 
+0

我的猜测是你搞乱了语句的顺序:首先你需要'直到...循环'来找到最后一行,然后才分配'Email = ...'。您当前的代码无条件地从R1C1中选择电子邮件。 –

在下面的部分,在这里你是从细胞试图让最后一排,然后将邮箱:

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 **) –