Filtro para listvie...
 
Notifications
Clear all

Filtro para listview não retorna linha correta  


Dunguinha
(@dunguinha)
Eminent Member Registered
Entrou: 2 anos atrás
Posts: 38
Topic starter  

Boa tarde turma.

Ao abrir o formulário o comando "ListView1_ItemClick" carrega as TextBox certinho.

Quando uso os filtros da "Frame2" a listview apresenta o resultado certinho mas o comando "ListView1_ItemClick" carrega nas TextBox a linha seguinte.

Onde resolver isso?

 


ResponderCitar (Quote)
LaerteB
(@laerteb)
Trusted Member Moderator
Entrou: 3 anos atrás
Posts: 72
 

Boa tarde, @Dunguinha

Amigo, copie e cole estes códigos abaixo em um módulo:

Sub filtrocodigo()

If frmBusca.txtcodigo.Text <> "" Then

With ThisWorkbook.Sheets("Empresas")

.Activate

Cells.Find(frmBusca.txtcodigo.Text, ActiveCell, xlValues, xlByRows, xlNext).Activate

frmBusca.TextBox1.Text = .Cells(ActiveCell.Row, 1).Value
frmBusca.TextBox2.Text = .Cells(ActiveCell.Row, 2).Value
frmBusca.TextBox3.Text = .Cells(ActiveCell.Row, 3).Value
frmBusca.TextBox4.Text = .Cells(ActiveCell.Row, 4).Value
frmBusca.TextBox5.Text = .Cells(ActiveCell.Row, 5).Value
frmBusca.ComboBox3.Text = .Cells(ActiveCell.Row, 6).Value
frmBusca.TextBox6.Text = .Cells(ActiveCell.Row, 6).Value
frmBusca.TextBox7.Text = .Cells(ActiveCell.Row, 7).Value
frmBusca.TextBox8.Text = .Cells(ActiveCell.Row, 8).Value
frmBusca.TextBox9.Text = .Cells(ActiveCell.Row, 9).Value
frmBusca.TextBox10.Text = .Cells(ActiveCell.Row, 10).Value
frmBusca.TextBox11.Text = .Cells(ActiveCell.Row, 11).Value

.Cells(ActiveCell.Row, 1).Select

End With

End If

End Sub

Sub filtrorazao()

If frmBusca.txtrazao.Text <> "" Then

With ThisWorkbook.Sheets("Empresas")

.Activate

Cells.Find(frmBusca.txtrazao.Text, ActiveCell, xlValues, xlByRows, xlNext).Activate

frmBusca.TextBox1.Text = .Cells(ActiveCell.Row, 1).Value
frmBusca.TextBox2.Text = .Cells(ActiveCell.Row, 2).Value
frmBusca.TextBox3.Text = .Cells(ActiveCell.Row, 3).Value
frmBusca.TextBox4.Text = .Cells(ActiveCell.Row, 4).Value
frmBusca.TextBox5.Text = .Cells(ActiveCell.Row, 5).Value
frmBusca.ComboBox3.Text = .Cells(ActiveCell.Row, 6).Value
frmBusca.TextBox6.Text = .Cells(ActiveCell.Row, 6).Value
frmBusca.TextBox7.Text = .Cells(ActiveCell.Row, 7).Value
frmBusca.TextBox8.Text = .Cells(ActiveCell.Row, 8).Value
frmBusca.TextBox9.Text = .Cells(ActiveCell.Row, 9).Value
frmBusca.TextBox10.Text = .Cells(ActiveCell.Row, 10).Value
frmBusca.TextBox11.Text = .Cells(ActiveCell.Row, 11).Value

.Cells(ActiveCell.Row, 1).Select

End With

End If

End Sub

Sub filtrocnpj()

If frmBusca.txtcnpj.Text <> "" Then

With ThisWorkbook.Sheets("Empresas")

.Activate

Cells.Find(frmBusca.txtcnpj.Text, ActiveCell, xlValues, xlByRows, xlNext).Activate

frmBusca.TextBox1.Text = .Cells(ActiveCell.Row, 1).Value
frmBusca.TextBox2.Text = .Cells(ActiveCell.Row, 2).Value
frmBusca.TextBox3.Text = .Cells(ActiveCell.Row, 3).Value
frmBusca.TextBox4.Text = .Cells(ActiveCell.Row, 4).Value
frmBusca.TextBox5.Text = .Cells(ActiveCell.Row, 5).Value
frmBusca.ComboBox3.Text = .Cells(ActiveCell.Row, 6).Value
frmBusca.TextBox6.Text = .Cells(ActiveCell.Row, 6).Value
frmBusca.TextBox7.Text = .Cells(ActiveCell.Row, 7).Value
frmBusca.TextBox8.Text = .Cells(ActiveCell.Row, 8).Value
frmBusca.TextBox9.Text = .Cells(ActiveCell.Row, 9).Value
frmBusca.TextBox10.Text = .Cells(ActiveCell.Row, 10).Value
frmBusca.TextBox11.Text = .Cells(ActiveCell.Row, 11).Value

.Cells(ActiveCell.Row, 1).Select

End With

End If

End Sub

E chame cada um destes 3 "Filtros" depois deste trecho de código que informo

abaixo...

 If Me.txtcnpj.Text = "" Then
limpar
Exit Sub
End If

É para ser inserido em cada um dos textbox do frame2, exemplo abaixo de

um dos textbox:

Private Sub txtcnpj_AfterUpdate()

Espero que seja isto que queria....

Em anexo o arquivo exemplo com estes códigos para melhor análise e

verificação...

 

Aguardando sua resposta e seu Feed Back ... não esqueça de Clicar no Botão "Curtir"...

 

LaerteB 😀 


ResponderCitar (Quote)
Dunguinha
(@dunguinha)
Eminent Member Registered
Entrou: 2 anos atrás
Posts: 38
Topic starter  

Obrigado Laerte pelo empenho.

Ainda estou com mesmo problema.


ResponderCitar (Quote)
LaerteB
(@laerteb)
Trusted Member Moderator
Entrou: 3 anos atrás
Posts: 72
 

Bom dia, @Dunguinha

 

Não entendi porque ainda tem o mesmo problema ??? 

A questão não era quando tu escrevia em um dos TextBox do "Frame2"

e desse o "Enter" não atualizava os TextBox com os dados da Planilha

referente a linha que estava buscando 🤔 ??? isso eu arrumei para ti, veja o

arquivo exemplo, está funcionando direitinho 😉 ...

 

Se for outra coisa por gentileza, explique com mais clareza e se

possível ilustre com imagens (com a explicação) para eu entender

onde quer chegar 🤔 ...

 

Aguardando sua resposta e seu Feed Back ... não esqueça de Clicar no Botão "Curtir"...

 

LaerteB 🙂 

 


Dunguinha curtiu
ResponderCitar (Quote)
Dunguinha
(@dunguinha)
Eminent Member Registered
Entrou: 2 anos atrás
Posts: 38
Topic starter  

Eita Laerte, não é que tu ta certo. 

Ao colocar na txtcodigo e der enter, esta carregando certinho nas textbox. A txtcnpj tb esta ok, só a txtrazao da dando erro. 

Não tinha reparado que ao dar enter já estava carregando as outras textbox, eu estava clicando na linha do listview, e aí mudava.

Mas assim tá perfeito. Só vê o porque do erro com filtro da txtrazao, por favor.

 

O filtro para txtrazao só funciona se digitar por completo, vi agora isso.

Não tem como deixar essa txtrazao apenas para filtrar somente com o primeiro nome?

 

Abraço,

 

 

 

Este post foi modificado 3 meses atrás por Dunguinha

ResponderCitar (Quote)
Mauro Coutinho
(@coutinho)
Trusted Member Moderator
Entrou: 2 anos atrás
Posts: 98
 

@dunguinha em uma analise rápida das rotinas baseando no seu primeiro modelo, pelo que percebi o item não está carregando corretamente pelo fato do Array (MatrizResultadosLinha) , então em uma solução talvez paliativa mas sem mudar suas rotinas,  só acrescente uma verificação se a textbox "txtcodigo" está vazia e adicione a seguinte instrução na rotina "ListView1_ItemClick" logo apos a linha onde armazenamos a variavel sLinha :


sLinha = MatrizResultadosLinha(Item)

If txtcodigo.Value <> "" Then
    sLinha = sLinha - 1
End If

 

Faça os testes e veja se é isso mesmo, no modelo ajustado pelo colega LaerteB seria a mesma alteração.

 

[]s

Este post foi modificado 3 meses atrás 2 vezes por Mauro Coutinho

LaerteB e Dunguinha curtiram
ResponderCitar (Quote)
Dunguinha
(@dunguinha)
Eminent Member Registered
Entrou: 2 anos atrás
Posts: 38
Topic starter  

@coutinho

Mandou bem Coutinho, funcionou como esperado.

Obrigado mais uma vez.

 

Abraço,


ResponderCitar (Quote)
LaerteB
(@laerteb)
Trusted Member Moderator
Entrou: 3 anos atrás
Posts: 72
 

Bom dia, @Dunguinha

Opa Ok... verifiquei e reparei que faltava uma "vírgula" em uma linha do código 😳 ,

para que não precise digitar "toda" razão social e sim uma parte dela será suficiente...

 

Então no "Objeto/Procedimento"

Sub filtrorazao()

Substitua esta linha do código (abaixo):

 Cells.Find(frmBusca.txtrazao.Text, ActiveCell, xlValues, xlByRows, xlNext).Activate

por esta abaixo:

 Cells.Find(frmBusca.txtrazao.Text, ActiveCell, xlValues, , xlByRows, xlNext).Activate

 

Verifique e veja se já foi corrigido (aqui está funcionando corretamente sem erros)...

 

Aguardando sua resposta e seu Feed Back ... não esqueça de Clicar no Botão "Curtir"...

 

LaerteB  🙂


Dunguinha curtiu
ResponderCitar (Quote)
Dunguinha
(@dunguinha)
Eminent Member Registered
Entrou: 2 anos atrás
Posts: 38
Topic starter  

Perfeito LaerteB.

Agora o barco anda, 😉 

Obrigado pela ajuda.

 

Abraço,


ResponderCitar (Quote)