Preciso de uma ajuda,
Tenho um codigo que ele faz a leitura de uma aba da planilha, onde contém todos os registros e depois ele retorna o valor que seja igual ao digitado (da esquerda para direita).
O problema é que quero retornar todo e qualquer registro que CONTENHA o que escrever e não somente esquerda.
cod.
Private Sub CbTituloCVM_Change()
Application.ScreenUpdating = True
Run "destravar"
valor_pesq = CbTituloCVM.Text
Dim guia As Worksheet
Dim linha As Integer
Dim coluna As Integer
Dim linhalistbox As Integer
Dim valor_celula As String
Dim conta_registros As Integer
Set guia = ThisWorkbook.Worksheets("Fun_Cadastro")
coluna = 3 'localizado dentro da coluna 3 os respectivos dados
linhalistbox = 0
conta_registros = 0
linha = 2 'dentro da aba de dados começa apartir da linha 2
'(linha, coluna) = (2,3) = c2
LstFundos.Clear
Sheets("Fun_Cadastro").Select
With guia 'Guia de dados no formulario
While .Cells(linha, coluna).Value <> Empty 'Enq. linha e coluna forem <> de 0
valor_celula = .Cells(linha, coluna).Value
If UCase(Left(valor_celula, Len(valor_pesq))) Like UCase(valor_pesq) Then
'--------------------------------
'OBSERVAÇÕES SOBRE A FORMULA
'UCase = Transforma tudo o q esta entre () em MAIUSCULO
'LEFT = Procurar a esq. de
'Len = Contador de Caract sobre um parametro (neste caso vlr. procurado)
'Empty = Valor NUll, ou seja, ZERO
'--------------------------------
With Me.LstFundos
.AddItem
.List(linhalistbox, 0) = Sheets("fun_cadastro").Cells(linha, 1) 'ID
.List(linhalistbox, 1) = Sheets("fun_cadastro").Cells(linha, 2) 'CNPJ
.List(linhalistbox, 2) = Sheets("fun_cadastro").Cells(linha, 3) 'Titulo CVM
.List(linhalistbox, 3) = Sheets("fun_cadastro").Cells(linha, 4) 'Titulo ABR
.List(linhalistbox, 4) = Sheets("fun_cadastro").Cells(linha, 5) 'Classificacao
.List(linhalistbox, 5) = Sheets("fun_cadastro").Cells(linha, 6) ' Conta
.List(linhalistbox, 6) = Sheets("fun_cadastro").Cells(linha, 7) ' Gestor
.List(linhalistbox, 7) = Sheets("fun_cadastro").Cells(linha, 8) ' Observação
linhalistbox = linhalistbox + 1
End With
conta_registros = conta_registros + 1
End If
linha = linha + 1
Wend
End With
Run "travar"
Application.ScreenUpdating = False
End Sub
____________________
Função LIKR não funciona, criterios de filtro como ="*"* não funcionam pois o listbox funciona com loop impossibilidando a função criterial.
Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
VBA LISTBOX LOOP
VBA LISTBOX LOOP
- Anexos
-
- investimento.png (12.71 KiB) Exibido 2264 vezes
-
- contenha.png (68.11 KiB) Exibido 2264 vezes
-
- code.png (5.4 KiB) Exibido 2264 vezes
Re: VBA LISTBOX LOOP
llathieri,
Com relação ao que foi destacado na última imagem, sim, esta linha deve ser alterada, já que a mesma verifica o conteúdo á esquerda, contido nesta célula.
Com base nessa informação, basta que se altere a instrução dela para :
Assim, a condição passa a ser SE o existe o valor pesquisado (valor_pesq) em todo o texto contido na celula atual.
Espero ter ajudado.
Abs
Com relação ao que foi destacado na última imagem, sim, esta linha deve ser alterada, já que a mesma verifica o conteúdo á esquerda, contido nesta célula.
Com base nessa informação, basta que se altere a instrução dela para :
Código: Selecionar todos
If UCase(.Cells(linha, coluna).Value) Like UCase(valor_pesq) Then
Espero ter ajudado.
Abs