Notifications
Clear all

Selecionar ultima linha preenchida para impressão

8 Posts
2 Usuários
0 Reactions
2,427 Visualizações
(@betorubini)
Posts: 57
Trusted Member
Topic starter
 

olá..

estou tentando adaptar esse código mas empaquei aqui:

On Error GoTo TratarErro

Dim Ultimalinha As Long

'Total de clientes, de cima para baixo localiza a última célula preenchida da lista
Ultimalinha = Worksheets("relatorio").Cells(Rows.Count, 1).End(xlUp).Row

'Imprime
'Exibe uma caixa de dialogo para seleção da impressora que deseja imprimir
Application.Dialogs(xlDialogPrinterSetup).Show
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=True

Sair:
Exit Sub
TratarErro:
'Tratamento de erro se houverem problemas
MsgBox "Houve um erro na impressão!", vbCritical
GoTo Sair

mas não consigo fazer a impressão parar na ultima linha preenchida
alguém pode me ajudar?
Obrigado

 
Postado : 12/09/2012 11:45 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

O que ha realmente de errado?
Tente assim..

Sub teste()


On Error GoTo TratarErro

Dim LastRow As Long
'Altere para o N] de colunas de acordo com sua necessidade
LastRow = Range("A:F").SpecialCells(xlCellTypeLastCell).Row
ActiveSheet.PageSetup.PrintArea = "$A$2:$F$" & LastRow




'Imprime
'Exibe uma caixa de dialogo para seleção da impressora que deseja imprimir
Application.Dialogs(xlDialogPrinterSetup).Show
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=True

Sair:
Exit Sub
TratarErro:
'Tratamento de erro se houverem problemas
MsgBox "Houve um erro na impressão!", vbCritical
GoTo Sair

End Sub

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/09/2012 4:34 am
(@betorubini)
Posts: 57
Trusted Member
Topic starter
 

Então o problema é que ele está imprimindo as 2500 linhas da planilha, gostaria que imprimisse somente ate a ultima digitada.
ex

uma vez vou ter 10 linhas de registro, ou por ex 50, ou 100
quero que imprima de acordo com a ultima.

se puder me ajudar
att

 
Postado : 13/09/2012 9:09 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Entendi, neste caso ha alguns recursos, você pode colocar uma formula (Via Excel ou VBA), para poder identificar qual é a ultima linha com com entrada dados.
Exemplo de função definida pra Linha e Coluna.

Option Explicit
 'Last Row
Function LR(Col As Variant, Optional OS As Long)
    Application.Volatile
    If Not IsNumeric(Col) Then Col = Columns(Col).Column()
    LR = Cells(Cells.Rows.Count, Col).End(xlUp).Offset(OS)
End Function
 
 
 'Last Column
Function LC(Rw As Variant, Optional OS As Long)
    Application.Volatile
    If Not IsNumeric(Rw) Then Rw = Rows(Rw).Row()
    LC = Cells(Rw, Cells.Columns.Count).End(xlToLeft).Offset(, OS)
End Function

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 13/09/2012 9:41 am
(@betorubini)
Posts: 57
Trusted Member
Topic starter
 

se não for em como, você poderia dizer onde aplica-los?
e pra conhecimento se pudesse dar uma "explicação" do código seria interessante
Obrigado.

 
Postado : 13/09/2012 10:17 am
(@betorubini)
Posts: 57
Trusted Member
Topic starter
 

Estou colocando a planilha em anexo se alguem puder me ajudar

Está o botão "IMPRIMIR" na multipage "Estoque"

att

 
Postado : 13/09/2012 4:53 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Veja se é o que espera

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 14/09/2012 5:56 am
(@betorubini)
Posts: 57
Trusted Member
Topic starter
 

Exatamente isso! Obrigado..

mas resolvi fazer de outra forma, achei mais interessante poder abrir a tela de configurações para a impressão

'iMPRIMIR
On Error GoTo TratarErro
Sheets("relatorio").Select
Dim z As Long, lastCell As Range, LR As Long
z = ActiveSheet.UsedRange.Columns.Count
Set lastCell = Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 0)
LR = lastCell.Row
Do Until Application.Count(Range(Cells(LR, 2), Cells(LR, 256))) <> 0
Set lastCell = lastCell.Offset(-1, 0)
LR = lastCell.Row
Loop
ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), lastCell).Address
'Abre Tela preview e configuração de impressão
Principal.Hide     ' Deixa formulário atrás da tela
Application.Dialogs(xlDialogPrintPreview).Show
Principal.Show    'retorna formulário a frente


Sair:
Exit Sub
TratarErro:
'Tratamento de erro se houverem problemas
MsgBox "Houve um erro na impressão!", vbCritical
GoTo Sair
End Sub
 
Postado : 14/09/2012 6:28 am