VBA循环行,但无法排除前一行内容

VBA循环行,但无法排除前一行内容,vba,excel,Vba,Excel,我有以下循环,从第二行开始为工作表中的每一行发送电子邮件 循环本身工作,它从第二行开始为每一行发送电子邮件 但是,我的循环无法排除前一行内容并将其累积到下一行的电子邮件中。我怀疑这和我的手机有关。如果您能帮上忙,那就太好了: Sub TestEmail1() Application.ScreenUpdating = False Dim aOutlook As Object Dim aEmail As Object Dim rngeAddresses As Range, rng

我有以下循环,从第二行开始为工作表中的每一行发送电子邮件

循环本身工作,它从第二行开始为每一行发送电子邮件

但是,我的循环无法排除前一行内容并将其累积到下一行的电子邮件中。我怀疑这和我的手机有关。如果您能帮上忙,那就太好了:

 Sub TestEmail1()
  Application.ScreenUpdating = False

  Dim aOutlook As Object
  Dim aEmail As Object
  Dim rngeAddresses As Range, rngeCell As Range, strRecipients As String
  Dim ccAddresses As Range, ccCell As Range, ccRecipients As String
  Dim rngeSubject As Range, SubjectCell As Range, SubjectContent As Variant
  Dim rngeBody As Range, bodyCell As Range, bodyContent As Variant
  Dim Table1 As Range
  Dim i As Integer

  Set rng = ActiveSheet.UsedRange
  LRow = rng.Rows.Count
    For i = 2 To LRow
      Set Table1 = Worksheets(1).Range("K1:R1")
      Set Table2 = Worksheets(2).Range("K" & i & ":" & "R" & i)
      Set aOutlook = CreateObject("Outlook.Application")
      Set aEmail = aOutlook.CreateItem(0)

      'set sheet to find address for e-mails as I have several people to
      'mail to

      Set rngeAddresses = ActiveSheet.Range("B" & i)
        For Each rngeCell In rngeAddresses.Cells
        strRecipients = strRecipients & ";" & rngeCell.Value
        Next

     Set ccAddresses = ActiveSheet.Range("C" & i)
       For Each ccCell In ccAddresses.Cells
       ccRecipients = ccRecipients & ";" & ccCell.Value
       Next

     Set rngeSubject = ActiveSheet.Range("D" & i)
       For Each SubjectCell In rngeSubject.Cells
       SubjectContent = SubjectContent & SubjectCell.Value
      Next

     Set rngeBody = ActiveSheet.Range("E" & i)
      For Each bodyCell In rngeBody.Cells
       bodyContent = bodyContent & bodyCell.Value
      Next

     'set Importance
     'aEmail.Importance = 2

      'Set Subject
       aEmail.Subject = rngeSubject
     'Set Body for mail
    'aEmail.Body = bodyContent
    aEmail.HTMLBody = bodyContent & "<br><br><br>" & RangetoHTML_    (Table1)            
    aEmail.To = strRecipients
    aEmail.CC = ccRecipients
    aEmail.Send

   Next i

  Exit Sub

 End Sub

是的,您正在SubjectContent、bodyContent和其他类似变量中积累越来越长的字符串。每次通过For i=2 to lRow循环时,都会将当前行中指定单元格的值添加到关联的内容变量中

出于某种原因,您还为每个电子邮件区域设置了一个内部循环,例如,为rgneBody.Cells中的每个bodyCell。如果我正确地阅读了您的代码,则不需要这些循环

因此,考虑到上述情况,我将改变:

Set rngeBody = ActiveSheet.Range("E" & i)
  For Each bodyCell In rngeBody.Cells
  bodyContent = bodyContent & bodyCell.Value
Next
致:

如果您认为中间rngeBody变量更可读,那么可以使用它,但这不是必需的


对其他电子邮件区域变量重复上述操作。

谢谢Doug!非常感谢
bodyContent = ActiveSheet.Range("E" & i)