Verdade, está perfeito. Poderia me explicar como você fez, pelo que observei só tem uma macro pequena. Muito obrigado pela ajuda...
Sub sddsd()
'' sddsd Macro'
Range("Q12").Select
Application.CutCopyMode = False
Selection.Copy
Range("Q12").Select
Application.CutCopyMode = False
Range("A10").Select
End Sub
Amigo, não é esta macro não. Esta deve ser algum vestígio de alguma gravação que fiz aqui. a macro real esta abaixo. Tambem anexei a planilha com os comentários:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Declaração das variáveis
Dim Total As Integer 'variável numero inteiro
Dim Contagem As Integer 'variável numero inteiro
Dim NumeroEmailsEnviados As Integer 'variável numero inteiro
Dim NumeroAIT As String 'variável texto
Dim Email As String 'variável texto
Dim DataInfracao As String 'variável texto
Dim PrazoIndicacao As String 'variável texto
NumeroEmailsEnviados = 0 ' Variável recebe o valor "0"
Range("DA1").Select ' Seleciona célula "DA1"
ActiveCell.FormulaR1C1 = "=COUNTA(R[9]C[-103]:R[9999]C[-103])+9" 'Insere fórmula na célula selecionada pra contar quantas linhas estão preenchidas na planilha
Total = Range("da1").Value ' Variável "Total" recebe o valor da quantidade de linhas que estão preenchidas na celula "DA1" através da fórmula
Range("DA1").Clear 'limpa a formula inserida na célula "DA1"
Contagem = 10 ' Variável "Contagem" recebe o valor "10"
Do While Contagem <= Total ' enquanto o valor da variável "Contagem" for menor ou igual ao valor da variável "Total" vai executar o código abaixo
If Range("B" & Contagem).Value <> "" And Range("E" & Contagem).Value <> "" And Range("K" & Contagem).Value <> "" And Range("M" & Contagem).Value <> "" And Range("Q" & Contagem).Value = "" Then 'se as células "B", "E", "K" e "M" estiverem preenchidas com dados e também a célula "Q" estiver vazia executa o codigo abaixo. ( o codigo "Range("B" & Contagem)" quer dizer célula B e valor da variável "Contagem" se Contagem for = 10 fica assim: B10
'Processo de criação do e-mail xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Dim OL As Object
Dim EmailItem As Object
Dim Wb As Workbook
Application.ScreenUpdating = False
Set OL = CreateObject("Outlook.Application")
Set EmailItem = OL.CreateItem(olMailItem)
ActiveSheet.UsedRange.Select
NumeroAIT = Range("B" & Contagem).Value ' Variável "NumeroART" recebe valor da célula "B" e "Contagem" Ex: B10
Email = Range("E" & Contagem).Value ' Variável "Email" recebe valor da célula "E" e "Contagem" Ex: E10
DataInfracao = Range("K" & Contagem).Value ' Variável "DataInfracao" recebe valor da célula "K" e "Contagem" Ex: K10
PrazoIndicacao = Range("M" & Contagem).Value ' Variável "PrazoIndicacao" recebe valor da célula "M" e "Contagem" Ex: M10
With EmailItem
.Subject = "Notificação de Penalidade de Multa - indicação de condutor - " & NumeroAIT 'Título do e-mail texto mais o valor da variável NumeroAIT
.Body = "Bom dia," & vbCrLf & vbCrLf & "Assim que possível comparecer ao departamento de Facilities (1º andar próximo a Academia) para retirar boleto de identificação de condutor referente aos autos de infração " & NumeroAIT & " de " & DataInfracao & " com prazo máximo para indicação em " & PrazoIndicacao & "." & vbCrLf & "" & vbCrLf & "Obrigado!" 'Texto do e-mail com os valores das variáveis
.To = Email 'destinatário do e-mail, valor que está na variável "email"
.CC = "emailcopia@teste.com" 'copia do e-mail
.Send 'Comando para enviar o e-mail
End With
Application.ScreenUpdating = True
Set Wb = Nothing
Set OL = Nothing
Set EmailItem = Nothing
Range("Q" & Contagem).Select 'Seleciona a célula "Q" e o valor da variável Contagem ex: Q10
ActiveCell.FormulaR1C1 = "=TODAY()" ' Insere a formula pra saber a data atual
Selection.Copy 'Copia o valor mostrado pela formula
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 'Cola no mesmo local como texto
NumeroEmailsEnviados = NumeroEmailsEnviados + 1 ' Variavel NumeroEmailsEnviados recebe seu valor mais 1. Esta variável conta quantos e-mails foram enviados pra informar no fim do código quantos e-mails foram enviados
Contagem = Contagem + 1 'Variavel Contegem recebe seu valor mais 1.
Else 'se alguma das células "B", "E", "K" e "M" NÃO estiver preenchida ou a célula "Q" NÃO estiver vazia executa o codigo abaixo.
Contagem = Contagem + 1 'Variavel Contegem recebe seu valor mais 1.
End If 'fim da instrução if
Loop ' volta na instrução DoWhile até a codição for satisfeita. Quando a condição DoWhile não for satisfeita não fara mais o loop e o codigo continua a partir deste ponto
If NumeroEmailsEnviados = 1 Then 'Se o valor da variavel "NumeroEmailsEnviados" for igal a 1 executará a mensagem abaixo
MsgBox ("Foi enviado 1 e-mail de notificação!!!") 'Mensagem
ElseIf NumeroEmailsEnviados > 1 Then 'Senão Se o valor da variavel "NumeroEmailsEnviados" for maior que 1 executará a mensagem abaixo
MsgBox ("Foram enviados " & NumeroEmailsEnviados & " e-mails de notificação!!!") ' Mensagem, dentro da mensagem tem a variável "NumeroEmailsEnviados" com o valor da quantidades de e-mails
Else ' Se a variavel "NumeroEmailsEnviados" for igual a 0, não faz nada e vai para o fim da instrução IF
End If 'Fim da instrução IF
NumeroEmailsEnviados = 0 'Zera o valor da variavel "NumeroEmailsEnviados"
Application.CutCopyMode = False
Range("A1").Select 'seleciona a celula "A1"
End Sub ' Fim da Macro
Att.: Lucélio
Lucélio Ferreira dos Santos
Eng. Eletricista
CREA: DF-7165/TD
[email protected]
Postado : 31/08/2016 10:11 am