Notifications
Clear all

PROBLEMA NO FORMULARIO

5 Posts
3 Usuários
0 Reactions
977 Visualizações
(@pelichiero)
Posts: 52
Trusted Member
Topic starter
 

Boa tarde,

Tenho uma planilha de controle de estoque , quando faço uma pesquisa de produtos e peço para selecionar todos os produtos a planilha trava como consigo arrumar esse problema?

 
Postado : 24/04/2017 11:18 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

PELICHIERO,

Boa tarde!

A planilha está travando em razão de um procedimento meio complexo que foi criado nesse código. Você precisa avriguar o que esse código realmente faz e, se for o caso, efetuar modificações no mesmo de modo a otimizar o mesmo.

Veja, quando você clica na Caixa de Seleção SELECIONAR TUDO é disparado o código que está no evento Click do CheckBox. Esse código, faz uma varredura por cerca de 1.104 registros existentes em sua base de dados. E depois, como se não bastasse, dentro de cada um desses 1.104 registros, ainda é feita uma chamada a um procedimento do CommandButton1_Click que faz mais uma varredura por todos os 1.104 registros!!! Quer dizer... não entendi...

No trecho do código abaixo, coloco os comentários sobre isso que observei. Veja:

Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then

UserForm1.ListView2.ListItems.Clear


    For i = 1 To ListView1.ListItems.Count ' Aqui começa a varredura por todos os 1.104 itens registrados
     
    If ListView1.ListItems.Item(i).Checked = False Then 'Aqui você verifica de os itens do ListView estão marcados.
       ListView1.ListItems.Item(i).Checked = True
       
    End If
    Call CommandButton1_Click 'Aqui você chama a rotina que novamente faz uma varredura por todos os registros.
    Next i
    
    Else

    For i = 1 To ListView1.ListItems.Count
    If ListView1.ListItems.Item(i).Checked = True Then
    ListView1.ListItems.Item(i).Checked = False
    End If
    Call CommandButton1_Click
    Next i
    
End If
End Sub

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 24/04/2017 12:18 pm
(@pelichiero)
Posts: 52
Trusted Member
Topic starter
 

Sou leigo no assunto , esse codigo foi adaptado. O que eu preciso é que ele puxe toda a base dados da planilha1 , para que depois eu possa selecionar alguns itens ,ou todos itens e gerar um relatorio. Tem com me ajudar.

 
Postado : 24/04/2017 12:35 pm
Jozelia
(@jozelia)
Posts: 45
Eminent Member
 

Boa Tarde,
Coloque o Call CommandButton1_Click apenas no final da rotina de seleção.

Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then
UserForm1.ListView2.ListItems.Clear
    For i = 1 To ListView1.ListItems.Count
    If ListView1.ListItems.Item(i).Checked = False Then
       ListView1.ListItems.Item(i).Checked = True
       
    End If
    Next i
    
    Else

    For i = 1 To ListView1.ListItems.Count
    If ListView1.ListItems.Item(i).Checked = True Then
    ListView1.ListItems.Item(i).Checked = False
    End If
    Next i
End If

Call CommandButton1_Click

End Sub
 
Postado : 24/04/2017 1:25 pm
(@pelichiero)
Posts: 52
Trusted Member
Topic starter
 

Muito obrigado Jozelia , ficou perfeito .

Abraço

 
Postado : 24/04/2017 1:35 pm