Ir ao conteúdo
  • Cadastre-se

DigusX

Membro Pleno
  • Posts

    34
  • Cadastrado em

  • Última visita

Tudo que DigusX postou

  1. Está havendo um outro problema. Ela perdeu a função de só enviar e-mail quando alguma célula da coluna M for editada. Depois da alteração que eu fiz, sempre quando muda qualquer célula de qualquer coluna ele envia um e-mail. Às vezes até mesmo 3 e-mails repetidos.
  2. Deu certo não! Pode deixar que isso aí eu resolvo fazendo: .To = "e-mail" 'Digite o e-mail que deseja, ou vários e-mail. Separando-os com ; Me ajuda no seguinte se possível: Minha fórmula real é: If Target.Address = "$M$" & linha Then Porém ele só envia o e-mail quando alguma célula da coluna M é alterada manualmente. Por esse motivo eu troquei essa fórmula aí por: If Range("M2").Value <> PrevVal Then Acontece que depois disso qualquer célula de qualquer coluna que sofre alteração Manualmente ou via Fórmula acaba sendo enviado por e-mail. Eu preciso que envie por e-mail somente quando alguma célula da coluna M mudar via fórmula. Obrigado amigo!
  3. Tá dando Next sem for Acho que ele não está identificando a coluna O como sendo a coluna da lista de emails. "" & Planilha10.Cells(linha, 15) & "" 'Esse 15 não é a linha não, é a coluna O Minha lista de emails está na coluna O. Na minha fórmula eu estava identificando como 15.
  4. Isso! tenho vários e-mail em uma coluna Private Sub Worksheet_Change(ByVal Target As Range) 'Envia e-mail pelo Outlook Dim OutApp As Object Dim OutMail As Object Dim texto As String Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(0) linha = ActiveCell.Row - 1 'If Target.Address = "$M$" & linha Then If Range("M2").Value <> PrevVal Then If Planilha10.Cells(linha, 13) = "Sim" Then texto = "Prezado(a), " & vbCrLf & vbCrLf & _ "O item: " & Planilha10.Cells(linha, 3) & " necessita de reparo" & "." & vbCrLf & vbCrLf & _ End If If Planilha10.Cells(linha, 13) = "Não" Then texto = "Prezado(a), " & vbCrLf & vbCrLf & _ "Foi reparado o item: " & Planilha10.Cells(linha, 3) & vbCrLf & vbCrLf & _ End If PrevVal = Range("M2").Value With OutMail .To = "" & Planilha10.Cells(linha, 15) & "" .CC = "" .BCC = "" .Subject = "Título do e-mail" .Body = texto .Display 'Utilize Send para enviar o email sem abrir o Outlook End With On Error GoTo 0 Set OutMail = Nothing Set OutApp = Nothing End If
  5. Dá pra adicionar em EstaPastaDeTrabalho: Private Sub Worksheet_Open() PrevVal = Planilha10.Range("M2").Value End Sub E criar um Módulo: Public PrevVal As Variant Porque aí quando você abrir a planilha ele irá gravar os valores. O curioso é que mesmo sem isso que eu mencionei acima a planilha está funcionando. Não entendo muito de VBA, não sei dizer se If Planilha10.Cells(linha, 13) = "Sim" Then está compensando o PrvVal vazio.
  6. Nesse caso aqui, como eu faço para ao invés dele buscar a linha ele buscar toda a coluna? With OutMail .To = "" & Planilha10.Cells(linha, 15) & ""
  7. Problema resolvido! Private Sub Worksheet_Change(ByVal Target As Range) 'Envia e-mail pelo Outlook Dim OutApp As Object Dim OutMail As Object Dim texto As String Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(0) linha = ActiveCell.Row - 1 'If Target.Address = "$M$" & linha Then If Range("M2").Value <> PrevVal Then If Planilha10.Cells(linha, 13) = "Sim" Then texto = "Prezado(a), " & vbCrLf & vbCrLf & _ "O item: " & Planilha10.Cells(linha, 3) & " necessita de reparo" & "." & vbCrLf & vbCrLf & _ End If If Planilha10.Cells(linha, 13) = "Não" Then texto = "Prezado(a), " & vbCrLf & vbCrLf & _ "Foi reparado o item: " & Planilha10.Cells(linha, 3) & vbCrLf & vbCrLf & _ End If PrevVal = Range("M2").Value With OutMail .To = "e-mail para quem deseja enviar" .CC = "" .BCC = "" .Subject = "Título do e-mail" .Body = texto .Display 'Utilize Send para enviar o email sem abrir o Outlook End With On Error GoTo 0 Set OutMail = Nothing Set OutApp = Nothing End If
  8. Bom dia pessoal! Conheço quase nada em VBA e queria que esse código abaixo buscasse toda a coluna A ou um intervalo A1:A100 ao invés de somente a célula A1. Private Sub Worksheet_Calculate() If Range("A1").Value <> PrevVal Then MsgBox "Algo mudou!" PrevVal = Range("A1").Value End If End Sub Quando eu uso ("A"), ("A1:A100") ou ("$A$") ele manda pro depurador. Retirei desse site: https://www.funcaoexcel.com.br/macro-que-roda-automaticamente/
  9. Bom dia! Estou com esse macro que roda automaticamente, porém ele só está enviando e-mail quando eu edito qualquer célula da coluna M manualmente, mas preciso que ele envie quando qualquer célula da coluna M mudar via fórmula. Private Sub Worksheet_Change(ByVal Target As Range) 'Envia e-mail pelo Outlook Dim OutApp As Object Dim OutMail As Object Dim texto As String Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(0) linha = ActiveCell.Row - 1 If Target.Address = "$M$" & linha Then If Planilha10.Cells(linha, 13) = "Sim" Then texto = "Prezado(a), " & vbCrLf & vbCrLf & _ "O item: " & Planilha10.Cells(linha, 3) & " necessita de reparo" & "." & vbCrLf & vbCrLf & _ End If If Planilha10.Cells(linha, 13) = "Não" Then texto = "Prezado(a), " & vbCrLf & vbCrLf & _ "Foi reparado o item: " & Planilha10.Cells(linha, 3) & vbCrLf & vbCrLf & _ End If With OutMail .To = "e-mail para quem deseja enviar" .CC = "" .BCC = "" .Subject = "Título do e-mail" .Body = texto .Display 'Utilize Send para enviar o email sem abrir o Outlook End With On Error GoTo 0 Set OutMail = Nothing Set OutApp = Nothing End If End Sub

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!