bruno1214,
Boa Tarde!
Uma das formas de fazer o que você quer é você colocar, antes do código que grava a área de impressão que você quer, um inputbox perguntando a Data de Início e um outro perguntando a Data Final do range a ser impresso. Você pode também criar um formulário com dois controles de data (para evitar erros de data do usuário) e chamar esse formulário assim que pressionar no botão ajuste da planilha.
Feito isso, ao invés de usar:
UltimaLinha = Cells(Rows.Count, 2).End(xlUp).Row
Que, atualmente, serve para você pegar a última linha da área a ser impressa, você deve criar duas variáveis para armazenar as datas dos controles de data do formulário ou as fornecidas pelos comandos inputbox.
Depois, você deve gravar no gravador de macros, os comandos necessários para limpar qualquer área de impressão que já exista.
Finalmente, ao invés de usar a informação que pega todas as linhas do range a ser impresso, como está nesta linha:
ActiveSheet.PageSetup.PrintArea = Range("$A$3:$P$" & UltimaLinha).Address
Você deve substituir pela faixa de células que você quer imprimir, utilizando-se das datas armazenadas nas variáveis. Por exemplo, se você armazenou a data inicial numa variável chamada DataIn e a data final numa variável chamada DataFim, você poderia fazer assim:
ActiveSheet.PageSetup.PrintArea = Range("$A$" & DataIn & ":$P$" & DataFim).Address
O resto é tudo igual.
Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)
Atenciosamente
Wagner Morel
Postado : 18/05/2015 2:04 pm