如何使用excel VBA发送电子邮件

如何使用excel VBA发送电子邮件,excel,vba,Excel,Vba,我的数据包含在A列到H列中。A列中的数据是电子邮件地址。我在另一个牢房里打了个复选框。我想要的是,当我勾选复选框时,它将继续向最后一行A列中的电子邮件帐户发送电子邮件。但下面的代码仅适用于单元格A1 Private Sub CheckBox1_Click() Dim Email As String Row = 1 Email = Sheet1.Cells(Row, 1) Do Until Sheet1.Cells(Row, 1) = "" Ro

我的数据包含在A列到H列中。A列中的数据是电子邮件地址。我在另一个牢房里打了个复选框。我想要的是,当我勾选复选框时,它将继续向最后一行A列中的电子邮件帐户发送电子邮件。但下面的代码仅适用于单元格A1

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
您从第一行获取
电子邮件
,然后在
Do-Until
循环中检查最后一行,但不修改
电子邮件
变量

解析:无需循环来查找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

您的其余代码工作正常。

在下面的部分中,您尝试获取最后一行,然后从该单元格获取电子邮件:

Row = 1
Email = Sheet1.Cells(Row, 1)
Do Until Sheet1.Cells(Row, 1) = ""
    Row = Row + 1
Loop
您从第一行获取
电子邮件
,然后在
Do-Until
循环中检查最后一行,但不修改
电子邮件
变量

解析:无需循环来查找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

您的其余代码工作正常。

我猜您弄乱了语句的顺序:首先需要
执行直到…循环
以查找最后一行,然后才分配
电子邮件=…
。您当前的代码只是无条件地从R1C1中拾取电子邮件。我猜您弄乱了语句的顺序:首先,您需要执行
直到…循环
以查找最后一行,然后才分配
电子邮件=…
。您当前的代码只是无条件地从R1C1中选取电子邮件。尊敬的专家,非常感谢您的知识sharing@taufik请标记为答案(点击我答案旁边的V)亲爱的专家们,非常感谢你们的知识sharing@taufik请标记为答案(单击我答案旁边的V)