Evandro, você procurou adaptar a partir de um exemplo enviado pelo Wagner Morel no tópico abaixo :
IMPRIMIR COM FORMULÁRIOS A PARTIR DE UMA LISTA SUSPENSA
viewtopic.php?f=23&t=8508&p=45036#p45036
Tudo bem, ao menos está tentando e aprendendo, acontece que toda adaptação de rotinas feitas especificamente para um modelo devemos ajustar alguns parametros, e no seu caso, seriam os Nomes Abas, a Coluna onde estão os dados da aba que iremos efetuar a busca, e o Range que receberá estes valores, então vamos por parte :
Troque a Rotina para Imprimir pela a abaixo :
Sub imprimir()
Dim shtRh As Worksheet
Dim shtPr As Worksheet
Dim x As Long
Dim y As Long
Dim intRetVal As Integer
intRetVal = MsgBox("Imprimir todos os cadastros?", vbYesNo, "Alerta")
If intRetVal = vbYes Then
Set shtRh = ThisWorkbook.Sheets("LOGISTICA")
Set shtPr = ThisWorkbook.Sheets("FORM")
x = shtRh.Range("A65536").End(xlUp).Row
For y = 6 To x
shtPr.Range("AJ10").Value = shtRh.Cells(y, 1).Value
shtPr.Calculate
shtPr.PrintOut
Next
Set shtRh = Nothing
Set shtPr = Nothing
End If
End Sub
Nela ajustei o Nome da Aba que estava "FORMULARIO" e em seu exemplo o nome correto é "FORM";
Tambem foi ajustado o Range que receberá os numeros que serão utilizados pela função PROCV e a coluna e linha incial onde se encontram estes numeros na aba LOGISTICA, ou seja onde estava :
For y = 2 To x
shtPr.Range("S11").Value = shtRh.Cells(y, 2).Value
Era preenchido o Range S11 com cada Valor na Coluna 2 a parta ir daa Linha 2 na aba LOGISTICA.
Ficando :
For y = 6 To x 'Aqui começamos pela Linha 6
shtPr.Range("AJ10").Value = shtRh.Cells(y, 1).Value 'Aqui seria a primeira linha 6 coluna 1.
Quanto ao Imprimir pelo Formulário, antes de fazer algum ajuste, necessitaria de saber se os numeros na aba LOGISTICA coluna SEQ, serão sempre em sequencia sem pular nenhum, isto porque a rotina que preenche o formulário utiliza como referencia os numeros e no seu caso está preenchendo o Listbox com os Nomes dos Clientes e se tivermos numeração diferentes não sequenciais para os clientes, temos de ajustar a rotina para imprimir pelo ID do Cliente.
Para o Preenchimento correto do Formulário, troque a rotina por esta :
Private Sub UserForm_Initialize()
Dim i, UltimaLinha As Long
UltimaLinha = Sheets("LOGISTICA").Cells(Cells.Rows.Count, 1).End(xlUp).Row
If UltimaLinha < 3 Then UltimaLinha = 3
For i = 6 To UltimaLinha
ListBox1.AddItem Sheets("LOGISTICA").Range("B" & i).Value
Next
End Sub
Quanto ao Controle ActiveX "ScrollBar" que colocou na aba FORM, clique com o Botão direito em cima do mesmo e escolha Propriedades e na caixaque abrir, no lado esquerdo em "LinkedCell" digite qual a celula que receberá o Numero quando o controle for acionado, mais abaixo temos "Min e Max", é referente ao primeiro numero que aparecerá no controle e o último.
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 25/07/2013 5:59 pm