if和elseif函数执行“ .Body”

时间:2019-03-22 14:25:11

标签: excel vba

image

因此,当通过excel发送电子邮件(在vba上为宏)时,我需要使用if和elseif函数来实现“ .Body”。 至此,我有了这个。但是它不起作用,它会出现“语法错误”。有人可以帮我找出问题所在吗?

Sub EnviarEmailEt4()


Dim OutApp As Object
Dim OutMail As Object

Dim Body As String

  Range("D2").Select
Do While ActiveCell.Value <> ""
     If ActiveCell >= 1 And ActiveCell.Offset(0, 1) = "" And InStr(4, Cells(ActiveCell.Row, 10), "@") > 0 Then

        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)

      With OutMail
            .To = Cells(ActiveCell.Row, 10).Value
            .CC = Cells(ActiveCell.Row, 11).Value
            .BCC = ""
            .Subject = Cells(ActiveCell.Row, 3).Value
            .Body = If (ActiveCell = 1) Or (ActiveCell = 2) Then
                    .Body = "ALERTA PRAZO ETAPA 4!!" & vbNewLine & vbNewLine & "Nº GQE " & Cells(ActiveCell.Row, 2).Value & " - " & Cells(ActiveCell.Row, 3).Value

                    ElseIf (ActiveCell >= 3) Then
                    .Body = "ULTRAPASSADO PRAZO ETAPA 4!!" & vbNewLine & vbNewLine & "Nº GQE " & Cells(ActiveCell.Row, 2).Value & " - " & Cells(ActiveCell.Row, 3).Value

                    End If


     End If

    Cells(ActiveCell.Row + 1, ActiveCell.Column).Select

    Loop
End Sub

2 个答案:

答案 0 :(得分:3)

在这种情况下,您将需要这样的东西。

If (ActiveCell = 1) Or (ActiveCell = 2) Then
      .body = "ALERTA PRAZO ETAPA 4!!" & vbNewLine & vbNewLine & "Nº GQE " & _ Cells(ActiveCell.Row, 2).Value & " - " & Cells(ActiveCell.Row, 3).Value
ElseIf (ActiveCell >= 3) Then
      .body = "ULTRAPASSADO PRAZO ETAPA 4!!" & vbNewLine & vbNewLine & "Nº GQE " & _ Cells(ActiveCell.Row, 2).Value & " - " & Cells(ActiveCell.Row, 3).Value
End If

编辑1:

with语句应如下所示:

With OutMail
    .To = Cells(ActiveCell.Row, 10).Value
    .CC = Cells(ActiveCell.Row, 11).Value
    .BCC = ""
    .Subject = Cells(ActiveCell.Row, 3).Value
    If (ActiveCell = 1) Or (ActiveCell = 2) Then
        .body = "ALERTA PRAZO ETAPA 4!!" & vbNewLine & vbNewLine & "Nº GQE " & Cells(ActiveCell.Row, 2).Value & " - " & Cells(ActiveCell.Row, 3).Value
    ElseIf (ActiveCell >= 3) Then
        .body = "ULTRAPASSADO PRAZO ETAPA 4!!" & vbNewLine & vbNewLine & "Nº GQE " & Cells(ActiveCell.Row, 2).Value & " - " & Cells(ActiveCell.Row, 3).Value
    End If
    .send
End With

答案 1 :(得分:0)

一个星期前,您问了完全相同的问题。上周代码中的错误与此问题完全相同。我不明白您是如何获得正面投票的。

“ x =如果a则为其他值”在VBA中无效。让我想知道您是否还编写了这段代码。

但是随便。 这是一个工作版本。

Sub EnviarEmailEt4()


Dim OutApp As Object
Dim OutMail As Object

Dim Body As String

  Range("D2").Select
Do While ActiveCell.Value <> ""
    If ActiveCell >= 1 And ActiveCell.Offset(0, 1) = "" And InStr(4, Cells(ActiveCell.Row, 10), "@") > 0 Then

        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)

    With OutMail
            .To = Cells(ActiveCell.Row, 10).Value
            .BCC = ""
            .Subject = Cells(ActiveCell.Row, 3).Value
            If (ActiveCell = 1) Or (ActiveCell = 2) Then
                    .Body = "ALERTA PRAZO ETAPA 4!!" & vbNewLine & vbNewLine & "Nº GQE " & Cells(ActiveCell.Row, 2).Value & " - " & Cells(ActiveCell.Row, 3).Value

            ElseIf (ActiveCell >= 3) Then
                    .Body = "ULTRAPASSADO PRAZO ETAPA 4!!" & vbNewLine & vbNewLine & "Nº GQE " & Cells(ActiveCell.Row, 2).Value & " - " & Cells(ActiveCell.Row, 3).Value
            End If
    End With
End If
    Cells(ActiveCell.Row + 1, ActiveCell.Column).Select
Loop
End Sub

顺便说一句,您永远不会发送带有此代码的电子邮件。您需要为此添加OutMail.send

相关问题