Excel I';我不熟悉VBA和I';我犯了一些错误

Excel I';我不熟悉VBA和I';我犯了一些错误,excel,vba,email,Excel,Vba,Email,我写了一个代码,它弹出错误“没有下一步”。请帮我纠正错误 我计划向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

我写了一个代码,它弹出错误“没有下一步”。请帮我纠正错误

我计划向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

一些建议:

使用
选项显式
它将帮助您更好地编码。
声明变量。
设置值

按照这个顺序

始终关闭
循环
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

在您的行下
msg.Body=sh.Range(“D”和i).Value
put
Next i
。下一步告诉代码循环结束的位置。
Set sh=thiswoolk.Worksheets(“发送电子邮件”)
练习代码缩进