2017-01-01 166 views
0

我有列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中選擇電子郵件。 –

回答

3

在下面的部分,在這裏你是從細胞試圖讓最後一排,然後將郵箱:

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

相關問題