Cadastro com Form (...
 
Notifications
Clear all

Cadastro com Form (ajuda com código)

5 Posts
2 Usuários
0 Reactions
1,377 Visualizações
(@evandro)
Posts: 8
Active Member
Topic starter
 

Pessoal, amigos do Planilhando...
Mais uma vez recorro aos feras do fórum... fiz várias pesquisas no fórum, más faltou feijão... e preciso de ajuda...
Fiz uma humilde adaptação de uma planilha... más o negócio não ficou muito bom... pois não entendo de VBA... estou tentando aprender... más ainda estou engatinhando...

Bom em minha planilha anexa, tenho 2 abas...
1 - FORM
2 - LOGISTICA

A aba LOGISTICA serve para digitação das informações dos diversos clientes...
A aba FORM tem uma ficha, que lê através de PROCV as informações da aba LOGÍSTICA...

Tem 2 botões, um para poder selecionar uma empresa específica e imprimir no FORM... que não está funcionando...
e o outro que faz a impressão geral de todos as empresas no FORM.

Será que alguém consegue dar uma força para melhorar esses 2 botões? fique a vontade para sugerir... mudar, adaptar... qualquer coisa que torne mais funcional...
Ou pelo menos corrigir o código, que eu estraguei... estraguei, pois como disse copiei de outro arquivo, más deu tudo errado...

Conto com os amigos....

Um Grande Abraço! :D

Evandro
Itajaí/SC.'.

 
Postado : 23/07/2013 11:41 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

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

 
Postado : 25/07/2013 5:59 pm
(@evandro)
Posts: 8
Active Member
Topic starter
 

Fantástico... muito obrigado pelo esclarecimento.
Muito didático... ai sim... eu aprendo...rsrsr

Ainda não tive tempo para modificar... farei isso ao longo do dia... se tiver alguma dúvida eu berro...:)

Muito obrigado por enquanto.

Evandro
Itajaí/SC.'.

 
Postado : 26/07/2013 6:07 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Evandro

Se a dica do Mauro foi útil, para agradecer, clique na mãozinha do lado da ferramenta Citar.

Att.

 
Postado : 26/07/2013 9:36 am
(@evandro)
Posts: 8
Active Member
Topic starter
 

Perfeito.
Já estou ciente disso...
Estava aguardando mexer no arquivo, ai sim postar todas as considerações... Ainda não tive tempo...

más já adianto então o clique...

Abçs

Evandro.

 
Postado : 26/07/2013 1:24 pm