我是 VBA 的新手,我遇到了一些错误



我写了一个代码,它弹出错误"For without next"。请帮我纠正这个错误。

我计划向1000个用户批量发送电子邮件。

我的尝试:

Sub Send_Emails() 
Dim sh As Worksheet
Set sh = ThisWorkbook("Send_Emails")
Dim OA As Object
Dim msg As Object
Set OA = CreateObject("Outlook.application")
Dim Last_Row As Integer
Last_Row = Application.CountA(sh.Range("A:A"))
For i = 2 To Last_Row
Set msg = OA.CreateItem(0)
msg.To = sh.Range("A" & i).Value
msg.CC = sh.Range("B" & i).Value
msg.Subject = sh.Range("C" & i).Value
msg.Body = sh.Range("D" & i).Value
End Sub

一些建议:

使用Option Explicit可以帮助你更好地编写代码。
声明变量。
设置值

按此顺序…

始终关闭loops,whiles,if语句等。作为第一件事,很容易忘记。

这个应该可以工作:

Option Explicit

Sub Send_Emails() 

Dim sh As Worksheet, OA As Object
Dim msg As Object, Last_Row As Integer

Last_Row = Application.CountA(sh.Range("A:A"))
Set sh = ThisWorkbook.Worksheets("Send_Emails")
Set OA = CreateObject("Outlook.application")

For i = 2 To Last_Row

Set msg = OA.CreateItem(0)
msg.To = sh.Range("A" & i).Value
msg.CC = sh.Range("B" & i).Value
msg.Subject = sh.Range("C" & i).Value
msg.Body = sh.Range("D" & i).Value

Next i

End Sub

最新更新