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?
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 😀
Obrigado Laerte pelo empenho.
Ainda estou com mesmo problema.
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 🙂
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,
@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
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 🙂
Perfeito LaerteB.
Agora o barco anda, 😉
Obrigado pela ajuda.
Abraço,