Отправка объема ячейки в заголовке письма - PullRequest
0 голосов
/ 06 мая 2019

Мне нужен скрипт, который просматривает цифры сверху вниз в 3-м столбце, и если он видит 0 и цифру до того, как она станет больше 100, то значение этой цифры будет отправлено в заголовок электронного письма.Текущая версия кодирования отправляет все значения на электронную почту (условие не работает).Но если GoTo заменить на Msgbox, скрипт отлично работает ...

For i = 2 To 100 Step 1
If cells(i, 3) = 0 And cells(i - 1, 3) < 100 Then Exit For
If cells(i, 3) = 0 And cells(i - 1, 3) > 100 Then GoTo email
If cells(i, 3) = 0 And cells(i - 1, 3) > 100 Then Exit For
Next i
email:
Dim olObj_1 As Outlook.Application
Dim mItem_1 As Outlook.MailItem
Set olObj_1 = New Outlook.Application
Set mItem_1 = olObj_1.CreateItem(olMailItem)
With mItem_1
    .To = "xxxx@xxxx.com"
    .Subject = "Figure_one " & cells(i - 1, 3)
    .Send
End With
End Sub

Ответы [ 2 ]

0 голосов
/ 06 мая 2019

Я думаю, вы можете попробовать это:

Option Explicit

Sub test()

    Dim olObj_1 As Outlook.Application
    Dim mItem_1 As Outlook.MailItem
    Dim str As String
    Dim i As Long

    With ThisWorkbook.Worksheets("Sheet1") ' Always select your worksheet name

        For i = 2 To 100

            If .Cells(i, 3).Value = 0 And .Cells(i - 1, 3).Value > 100 Then

                If str = "" Then
                    str = "Figure_one " & .Cells(i - 1, 3).Value
                Else
                    str = str & ", Figure_one " & .Cells(i - 1, 3).Value
                End If

            End With

        Next i

        Set olObj_1 = New Outlook.Application
        Set mItem_1 = olObj_1.CreateItem(olMailItem)

        With mItem_1
            .To = "xxxx@xxxx.com"
            .Subject = str
            .Send
        End With

    End With

End Sub
0 голосов
/ 06 мая 2019

Попробуйте это:

Option Explicit
Sub Mail()

    Dim i As Long        

    For i = 2 To 100
        If Cells(i, 3) = 0 And Cells(i - 1, 3) > 100 Then
            Dim olObj_1 As Outlook.Application
            Dim mItem_1 As Outlook.MailItem
            Set olObj_1 = New Outlook.Application
            Set mItem_1 = olObj_1.CreateItem(olMailItem)
            With mItem_1
                .To = "xxxx@xxxx.com"
                .Subject = "Figure_one " & Cells(i - 1, 3)
                .Send
            End With
            Exit For
        End If
    Next i

End Sub

Я предполагаю, что вы хотите отправить только 1 электронное письмо, иначе ваш код должен измениться.

...