Erro ao enviar e-mail automático

1

Eu tenho uma pasta de trabalho compartilhada que tem uma coluna que usa uma lista de validação de dados. Se YES for selecionado, gostaria que ele enviasse um e-mail para um determinado departamento para solicitar que eles consultassem a pasta de trabalho.

Eu cheguei até aqui

Sub SendMail()
    If Range("G10:G250") = "YES" Then
            With CreateObject("Outlook.Application").createitem(0)
                .To = "p***.h***@****.com"
                .Subject = "Update from Facility Manager"
                .Body = "Hi Property Services, " & vbNewLine & vbNewLine & " Please follow the link to see update on Facilty Management Tracker"
                .Send
            End With
    End If
End Sub

mas continuo recebendo um erro type mismatch .

    
por P Hope 18.07.2018 / 09:52

1 resposta

1

É importante, ao perguntar sobre erros, indicar exatamente onde o erro acontece. Coloque um ponto de interrupção na medianiz do painel de código no início de seu código e passe uma linha no tempo com F8 .

No seu código, o erro "incompatibilidade de tipo" ocorre na linha

If Range("G10:G250") = "YES" Then

Um intervalo que abrange mais de uma célula não pode ter um valor de cadeia. Não está claro se sua intenção é percorrer todas as células no intervalo e enviar um email se uma ou mais células indicarem "SIM". O código modificado a seguir procura um "YES" no intervalo e, se encontrado, define um booleano e pára de procurar mais. Então, se o booleano estiver definido, prepara e envia o email.

Private Sub SendMail()
    Dim cell As Range
    Dim y As Boolean

    'If Range("G10:G250").Value = "YES" Then
    y = False
    For Each cell In Range("G10:G250")
        If cell.Value = "YES" Then
            y = True
            Exit For
        End If
    Next

    If y Then
        With CreateObject("Outlook.Application").createitem(0)
            .To = "p***.h***@****.com"
            .Subject = "Update from Facility Manager"
            .Body = "Hi Property Services, " & vbNewLine & vbNewLine & " Please follow the link to see update on Facilty Management Tracker"
            .Send  'during debugging you can use .Display instead (to avoid filling someones mailbox)
        End With
    End If

End Sub
    
por 18.07.2018 / 13:32