Alexandre, temos três rotinas pra fazer o aquilo que você havia pedido.
Quando você clica no botão "Imprimir" dispara a rotina chamada Imprimir:
Public Sub Imprimir()
Dim linha As Long 'Declarando a variável linha que servirá para guardar a informação referente à última linha preenchida da planilha 2.
ActiveWindow.SelectedSheets.PrintPreview 'Este é o comando para abrir a janela de visualização da impressão.
Worksheets(2).Select
linha = Cells(Cells.Rows.Count, 7).End(xlUp).Row + 1 'Aqui nós inserimos em linha o valor da última linha preenchida na plan2.
'Daqui em diante estamos só copiando os valores da plan1 para a plan2.
Worksheets(2).Range("A" & linha).Value = Worksheets(1).Range("C3").Value
Worksheets(2).Range("B" & linha).Value = Worksheets(1).Range("E4").Value
Worksheets(2).Range("C" & linha).Value = Worksheets(1).Range("K5").Value
Worksheets(2).Range("D" & linha).Value = Worksheets(1).Range("I14").Value
Worksheets(2).Range("E" & linha).Value = Worksheets(1).Range("I21").Value
Worksheets(2).Range("F" & linha).Value = Worksheets(1).Range("B36").Value & " " & Worksheets(1).Range("A37").Value
Worksheets(2).Range("G" & linha).Value = Worksheets(1).Range("H44").Value
Worksheets(2).Range("H" & linha).Value = Worksheets(1).Range("L2").Value
Worksheets(1).Select 'Voltamos a selecionar a plan1.
End Sub
Quando você altera a célula "L2" (Número do RPA) a seguinte rotina roda no evento change da plan1:
Private Sub Worksheet_Change(ByVal Target As Range)
'O objetivo aqui é fazer com que a rotina "CarregaRPA" tode apenas quando a célula "L2" for alterada. O evento change, por padrão, executa os comandos quando qualquer célula da planilha for alterada
Static rng As Variant
If IsEmpty(rng) Then
rng = Range("L2")
End If
If rng = Range("L2") Then Exit Sub
rng = Range("L2")
Call CarregaRPA 'Chama a rotina "CarregaRPA"
End Sub
Após a verificação se a célula alterada foi, realmente, a "L2", chamamos a rotina "CarregaRPA" que é descrita abaixo:
Public Sub CarregaRPA()
Dim linha As Long, X As Long 'Declarando a variável linha que servirá para guardar a informação referente à última linha preenchida da planilha 2 e a variável X que servirá para preencher a linha durante o loop que iremos executar.
linha = Cells(Cells.Rows.Count, 8).End(xlUp).Row 'Armazenando o numero da última linha preenchida na plan2.
For X = 2 To linha 'Executamos um loop para verificar em todos os registros presentes na plan2, se algum corresponde ao valor presente na célula "L2" (Número do RPA). Caso o valor seja encontrado, copiamos as informações deste registro para a plan1.
If Worksheets(2).Cells(X, 8).Value = Worksheets(1).Range("L2").Value Then
Worksheets(1).Range("C3").Value = Worksheets(2).Range("A" & X).Value
Worksheets(1).Range("E4").Value = Worksheets(2).Range("B" & X).Value
Worksheets(1).Range("K5").Value = Worksheets(2).Range("C" & X).Value
Worksheets(1).Range("I14").Value = Worksheets(2).Range("C" & X).Value
Worksheets(1).Range("I21").Value = Worksheets(2).Range("E" & X).Value
Worksheets(1).Range("B36").Value = Worksheets(2).Range("F" & X).Value
Worksheets(1).Range("H44").Value = Worksheets(2).Range("G" & X).Value
Worksheets(1).Range("L2").Value = Worksheets(2).Range("H" & X).Value
End If
Next
End Sub
Espero que ajude a compreender o código. Apertando as teclar Alt+F11 você poderá observar o código através do VBE.
Se tiver alguma dúvida ou precisar de algo, é só falar.
Att.,
Postado : 23/01/2013 1:10 pm