Página 1 de 1
Macro para "Definir área de impressão" automaticamente
Enviado: 15 Jun 2018 às 09:40
por Spinhosay
Bom Dia Queridos.
Pesquisei aqui e achei varias respostas diferentes da que necessito.
Tenho uma tabela que atualizo com muita frequência. Só que as vezes uso apenas 10 linhas, em outras ocasiões 500 linhas.
Necessito de uma VBA que defina automaticamente pra mim a aréa de impressão, se por exemplo, eu tenho 22 linhas sendo utilizadas e a Célula C23 está vazia, que defina que a área de impressão deve ser de B1:N22, automaticamente.
Perco muito tempo definindo área de impressão. Já tenho um botão de impressão. Se definisse por conta ajustando ao texto que já está na planilha, me ajudaria muito.
Re: Macro para "Definir área de impressão" automaticamente
Enviado: 15 Jun 2018 às 10:17
por osvaldomp
Experimente:
Código: Selecionar todosSub ImprimePlan()
Dim LR As Long
With ActiveSheet
LR = .Cells(Rows.Count, 2).End(3).Row
.PageSetup.PrintArea = "B1:N" & LR
.PrintOut
End With
End Sub
Macro para "Definir área de impressão" automaticamente
Enviado: 19 Jun 2018 às 11:14
por Spinhosay
Bom dia Osvaldo. Obrigado por sua resposta.
Em cima do seu código, fiz uma pequena modificação e cheguei mais ou menos onde desejava.
Código: Selecionar todosSub ImprimePlan()
Dim Lr As Long
With ActiveSheet
Lr = .Cells(Rows.Count, 3).End(xlUp).Row 'define a ultima linha nao vazia
Lr = IIf(Lr < 5, 5, Lr)
.PageSetup.PrintArea = ("B1:N" & Lr)
End With
End Sub
mas ainda, para que ele funcione, necessito acioná-lo, manualmente ou com um botão. Como faço pra que ele ocorra automaticamente quando uma determinada célula for modificada? Desde já, agradeço.
Re: Macro para "Definir área de impressão" automaticamente
Enviado: 19 Jun 2018 às 11:47
por osvaldomp
Spinhosay escreveu: Como faço pra que ele ocorra automaticamente quando uma determinada célula for modificada?
Qual seria essa "
determinada célula" ? Considerei como sendo a célula A1, altere se necessário. E considerei que a "determinada célula" não contém fórmula.
O código abaixo deve ser instalado no módulo da planilha de interesse.
Código: Selecionar todosPrivate Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
Me.PageSetup.PrintArea = "B1:N" & IIf(Cells(Rows.Count, 3).End(xlUp).Row < 5, 5, Cells(Rows.Count, 3).End(xlUp).Row)
End Sub
Macro para "Definir área de impressão" automaticamente
Enviado: 19 Jun 2018 às 15:27
por mprudencio
Eu usaria ao clicar de um botao.
Assim vc executa qdo tiver certeza que o arquivo esta pronto para ser impresso.
Re: Macro para "Definir área de impressão" automaticamente
Enviado: 02 Jul 2018 às 10:08
por Spinhosay
mprudencio escreveu:Eu usaria ao clicar de um botao.
Assim vc executa qdo tiver certeza que o arquivo esta pronto para ser impresso.
Bom Dia mprudencio.
Essa solução não me ajuda pois não pretendo imprimir o arquivo. Mas os usuários, quando forem imprimir, gostaria que a área de impressão estivesse pronta e definida automaticamente.
osvaldomp escreveu:Visão contraída
REVISÃO DO TÓPICO: MACRO PARA "DEFINIR ÁREA DE IMPRESSÃO" AUTOMATICAMENTE
Olá Osvaldomp
Não sei o que fiz errado. Mas não deu certo. Estou anexando a planilha.
Grato
Macro para "Definir área de impressão" automaticamente
Enviado: 02 Jul 2018 às 11:34
por mprudencio
Coloca o codigo que define a area de impressao junto do seu codigo que efetivamente imprime o arquivo.
Aproveitando o codigo do Osvaldo eu usaria assim associado ao botao que vc ja usa para imprimir.
Código: Selecionar todos
Sub ImprimePlan()
Dim Lr As Long
With ActiveSheet
Lr = .Cells(Rows.Count, 3).End(xlUp).Row 'define a ultima linha nao vazia
.range ("B1:N" & Lr).printout
End With
End Sub
Não precisa definir a area de impressão basta informar o intervalo que deseja imprimir.
Re: Macro para "Definir área de impressão" automaticamente
Enviado: 02 Jul 2018 às 14:57
por Spinhosay
mprudencio escreveu:Coloca o codigo que define a area de impressao junto do seu codigo que efetivamente imprime o arquivo.
Aproveitando o codigo do Osvaldo eu usaria assim associado ao botao que vc ja usa para imprimir.
Código: Selecionar todos
Sub ImprimePlan()
Dim Lr As Long
With ActiveSheet
Lr = .Cells(Rows.Count, 3).End(xlUp).Row 'define a ultima linha nao vazia
.range ("B1:N" & Lr).printout
End With
End Sub
Não precisa definir a area de impressão basta informar o intervalo que deseja imprimir.
acho que não entendi.
Ficaria assim?
Código: Selecionar todosPrivate Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$2" Then Exit Sub
Me.PageSetup.PrintArea = "B1:N" & IIf(Cells(Rows.Count, 3).End(xlUp).Row < 5, 5, Cells(Rows.Count, 3).End(xlUp).Row)
Dim Lr As Long
With ActiveSheet
Lr = .Cells(Rows.Count, 3).End(xlUp).Row 'define a ultima linha nao vazia
Lr = IIf(Lr < 5, 5, Lr)
.PageSetup.PrintArea = ("B1:N" & Lr)
End With
End Sub
Macro para "Definir área de impressão" automaticamente
Enviado: 02 Jul 2018 às 16:15
por mprudencio
Vc testou o codigo que sugeri?
Re: Macro para "Definir área de impressão" automaticamente
Enviado: 02 Jul 2018 às 18:25
por osvaldomp
Spinhosay escreveu:
Não sei o que fiz errado. Mas não deu certo. Estou anexando a planilha.
Você não informou antes que trata-se de Tabela Excel, e o comando que passei para encontrar a última linha com dados não se aplica a Tabelas, por isso o erro. Experimente o código abaixo já alterado no lugar do anterior (no módulo da planilha, como você colocou o anterior).
obs. o segundo código que você colocou no módulo da planilha
Sub ImprimePlan pode ser deletado.
Código: Selecionar todosPrivate Sub Worksheet_Change(ByVal Target As Range)
Dim LR As Long
If Target.Address <> "$C$2" Then Exit Sub
LR = Columns(3).Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
If LR < 5 Then LR = 5
Me.PageSetup.PrintArea = "B1:N" & LR
End Sub
Re: Macro para "Definir área de impressão" automaticamente
Enviado: 02 Jul 2018 às 20:40
por Spinhosay
osvaldomp escreveu:Spinhosay escreveu:
Não sei o que fiz errado. Mas não deu certo. Estou anexando a planilha.
Você não informou antes que trata-se de Tabela Excel, e o comando que passei para encontrar a última linha com dados não se aplica a Tabelas, por isso o erro. Experimente o código abaixo já alterado no lugar do anterior (no módulo da planilha, como você colocou o anterior).
obs. o segundo código que você colocou no módulo da planilha Sub ImprimePlan pode ser deletado.
Código: Selecionar todosPrivate Sub Worksheet_Change(ByVal Target As Range)
Dim LR As Long
If Target.Address <> "$C$2" Then Exit Sub
LR = Columns(3).Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
If LR < 5 Then LR = 5
Me.PageSetup.PrintArea = "B1:N" & LR
End Sub
Ola Osvaldo
Inseri seu código novamente, e mesmo convertendo em intervá-lo (desfazendo a tabela), quando dou Ctrl+P continua aparecendo mais de 40 páginas. Tentei limpar intervalo de impressão e modificar denovo a célula C2 para atualizar, mas não está aplicando a nova definição de área.
Estou quebrando a cabeça aqui...
Anexei novamente.
Obrigado mais uma vez.
Macro para "Definir área de impressão" automaticamente
Enviado: 02 Jul 2018 às 21:12
por mprudencio
Nao testou o que eu sugeri!! Paciência.
Re: Macro para "Definir área de impressão" automaticamente
Enviado: 02 Jul 2018 às 21:29
por osvaldomp
Inseri seu código novamente
Você inseriu o código em um módulo comum (Módulo1). Ele deve ser inserido no módulo da planilha, lembra disso? Após instalar o código no módulo da planilha, para testar selecione C2 / aperte F2 / em seguida aperte Enter
e mesmo convertendo em intervá-lo (desfazendo a tabela),
Utilizando o código que passei por último não é necessário desfazer o modo Tabela.
sugestão - não polua a tela do tópico, para responder clique em +Resposta localizado abaixo da última postagem, só clique em Responder com citação se necessário.
Re: Macro para "Definir área de impressão" automaticamente
Enviado: 03 Jul 2018 às 07:51
por Spinhosay
Perfeito!