Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por avgsantos
Posts
#14293
Boa noite, Pessoal do Fórum

Não estou conseguindo solucionar o problema abaixo, tenho um formulário que busca o registro de um cliente dentro da listview conforme o código abaixo da primeira parte, até ai tudo bem está funcionando, minha duvida é a segunda parte "filtro" conforme eu digito uma palavra ele filtra a palavra e retorna o valor digitado blz, agora quando eu apago a palavra do textbox "txt_busca" estão retornando todos os registro de todos os clientes o correto seria retorna o valor somente daquele cliente. Seria possível fazer isso: Obrigado mais uma vez

****Primeira Parte*******
Sub busca_regitros()
Dim linha As Integer
Dim codigo As String
linha = 2
codigo = txt_codigo
Sheets("Faltas e Saidas").Select
list_historico.ListItems.Clear

Do Until Sheets("Faltas e Saidas").Cells(linha, 1) = ""

If Sheets("Faltas e Saidas").Cells(linha, 1) = codigo Then

'coloca o cabeçalho no listview historico
With list_historico
.ColumnHeaders.Clear
.Gridlines = True
.View = lvwReport
.FullRowSelect = True

.ColumnHeaders.Add , , " Data", 48
.ColumnHeaders.Add , , " Motivo / Observação", 315
.ColumnHeaders.Add , , " Cadastrado", 54
.ColumnHeaders.Add , , " ID", 20
End With

'Adiciona os dados a listview historico
Set li = list_historico.ListItems.Add(Text:=Format(Sheets("Faltas e Saidas").Cells(linha, 4).Value, "dd/mm/yyyy")) 'Data
li.SubItems(1) = Sheets("Faltas e Saidas").Cells(linha, 3).Value 'Motivo
li.SubItems(2) = Sheets("Faltas e Saidas").Cells(linha, 5).Value 'Cadastrado
li.SubItems(3) = Sheets("Faltas e Saidas").Cells(linha, 6).Value 'Id
End If

linha = linha + 1
Loop

lbl_registros = "Total de Ocorrencia: " & Me.list_historico.ListItems.Count
End Sub

******Segunda Parte********
Private Sub txt_busca_Change()
Dim valor_pesq As String
Dim linha As Integer
Dim coluna As Integer
Dim valor_celula As String
valor_pesq = txt_busca.Text
coluna = 3
linha = 2
list_historico.ListItems.Clear
Plan7.Select
With Plan7
While .Cells(linha, coluna).Value <> Empty
valor_celula = .Cells(linha, coluna).Value
If UCase(Left(valor_celula, Len(valor_pesq))) = UCase(valor_pesq) Then
Set li = list_historico.ListItems.Add(Text:=Plan7.Cells(linha, 4).Value) 'Data
li.ListSubItems.Add Text:=Plan7.Cells(linha, 3).Value 'Motivo
li.ListSubItems.Add Text:=Plan7.Cells(linha, 5).Value 'Cadastrado
li.ListSubItems.Add Text:=Plan7.Cells(linha, 6).Value 'ID
End If
linha = linha + 1
Wend
End With
lbl_registros = "Total de Ocorrencia: " & Me.list_historico.ListItems.Count
End Sub
Por avgsantos
Posts
#14390
Boa noite, Pessoal

Segue o aquivo excel para entender melhor, o filtro funciona porém quando eu apago a palavra do campo buscar ele retorna todos os valores dos cliente da tabela.

Obrigado
Avatar do usuário
Por Basole
Posts Avatar
#14442
avgsantos, eu nao entendi direito o funcionamento do sue formulario, mas tente isso:

insira esta linha de codigo no inicio do seu evento txt_busca_Change()
Código: Selecionar todos
 If Len(txt_busca.Text) = 0 Then cbx_nome_Change: Exit Sub 
Por avgsantos
Posts
#14464
Boa tarde, Basole
Adicionei a linha porém está trazendo informação historico de ocorrencia de outro cliente.
Exemplo: Buscar o nome pelo marcio no historico de ocorrencia tem saida,licença e etc ao colocar o nome "saida" lá embaixo da caixa de texto ele está trazendo "suspenso e saida", suspenso não tem no historico ocorrencia do marcio ou seja está trazendo todas as ocorrencias dos clientes cadastrado.
Por avgsantos
Posts
#14718
Boa noite, Pessoal
Alguém poderia me ajudar a solucionar meu problema.
Agradeço
avgsantos
Avatar do usuário
Por Basole
Posts Avatar
#14746
Boa tarde, Basole
Adicionei a linha porém está trazendo informação historico de ocorrencia de outro cliente.
Exemplo: Buscar o nome pelo marcio no historico de ocorrencia tem saida,licença e etc ao colocar o nome "saida" lá embaixo da caixa de texto ele está trazendo "suspenso e saida", suspenso não tem no historico ocorrencia do marcio ou seja está trazendo todas as ocorrencias dos clientes cadastrado.
@avgsantos acredito se seja facil fazer o filtro, o dificil, como disse anteriormente, é entender melhor o funcionamento da do seu form, ou o que voce esta tentando fazer?
Por avgsantos
Posts
#14772
Boa noite, Basole
Abre o formulário e selecione um nome, pode ser marcio irá trazer todas as informações do cliente e histórico de ocorrências, tem uma caixa de texto no fim do formulário para filtrar a ocorrência por motivo, quando vc digita a palavra "suspenso" está trazendo esta ocorrência mas não tem cadastro desta palavra no histórico de ocorrência do marcio, segue anexo as imagens passo a passo para entender melhor.
Por avgsantos
Posts
#14804
Alterei a rotina abaixo, deu certo

Private Sub txt_busca_Change()
While .Cells(linha, coluna).Value <> Empty
valor_celula = .Cells(linha, coluna).Value
If UCase(Left(valor_celula, Len(valor_pesq))) = UCase(valor_pesq) And Me.txt_codigo.Text = .Cells(linha, 1) Then

avgsantos
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord