none
Imprimir somente conteúdo preenchido em um Range RRS feed

  • Pergunta

  • Olá, boa tarde.

    Tenho curiosidades em VBA e peço desculpa por não poder contribuir ricamente com vocês.

    Tenho um range de A1 a E550 mas nem todo este range está preenchido. Gostaria que pudessem me ajudar a encontrar uma maneira de fazer com que, com apenas um botão, eu possa imprimir no formato PDF o conteúdo preenchido.

    Trata-se de uma planilha com a qual eu possa verificar uma gama de materiais, estado de conservação, responsável pela utilização, quantidade desse material e a natureza dele (metro, grama, litro...). Viabilizei este documento para facilitar o uso com um tablet com Windows 8/8.1 portando o Office 2013 instalado (meu caso), visando mobilidade.

    Os códigos é puramente didático pra mim mas a aplicação é funcional. Afinal, quem não quer impressionar o chefe, destacando-se dos demais?

    Segue código:

    Sub Impressao()
       
    Dim naoVazia As Integer
     Worksheets("RESUMO").Select
     naoVazia = ThisWorkbook.Worksheets("RESUMO").Range("E550").End(xlUp).Offset(0, 5).Row
        Range("A1:E550").Select
        Range("A1:E + naoVazia").Select
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False

    End Sub

    Como cheguei a esta conclusão: Gravei uma macro de impressão e através de uma linha que verifica de baixo para cima uma célula vazia e tentei alterar a "ultima célula vazia de baixo para cima" como o limite da seleção da impressão. Mas falha.

    Alguém poderia, por favor, me ajudar a desvendar este mistério?

    Obrigado.

    quarta-feira, 15 de julho de 2015 19:36

Respostas

  • Bem vindo ao fórum,

    O operador de concatenação do VBA é o '&".

    Além disso, variáveis não devem ficar entre aspas.

    Range("A1:E" & naoVazia).Select

    Isso foi o que peguei de momento.

    Caso o erro persista, diga em qual linha acontece e qual a mensagem retornada.

    Abs

    • Marcado como Resposta Felipe S. Xavier terça-feira, 28 de julho de 2015 19:21
    quarta-feira, 15 de julho de 2015 19:44
  • Para selecionar todas as células não vazias de um intervalo, você utiliza o método SpecialCells...

    Range("A1:E1000").SpecialCells(xlCellTypeConstants).Select


    Natan

    • Marcado como Resposta Felipe S. Xavier terça-feira, 28 de julho de 2015 19:22
    quinta-feira, 16 de julho de 2015 10:39

Todas as Respostas

  • Bem vindo ao fórum,

    O operador de concatenação do VBA é o '&".

    Além disso, variáveis não devem ficar entre aspas.

    Range("A1:E" & naoVazia).Select

    Isso foi o que peguei de momento.

    Caso o erro persista, diga em qual linha acontece e qual a mensagem retornada.

    Abs

    • Marcado como Resposta Felipe S. Xavier terça-feira, 28 de julho de 2015 19:21
    quarta-feira, 15 de julho de 2015 19:44
  • Para selecionar todas as células não vazias de um intervalo, você utiliza o método SpecialCells...

    Range("A1:E1000").SpecialCells(xlCellTypeConstants).Select


    Natan

    • Marcado como Resposta Felipe S. Xavier terça-feira, 28 de julho de 2015 19:22
    quinta-feira, 16 de julho de 2015 10:39