Página 1 de 1

VBA LISTBOX LOOP

Enviado: Dom Jan 13, 2019 7:16 pm
por Ilathieri
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.

Re: VBA LISTBOX LOOP

Enviado: Ter Abr 09, 2019 10:06 pm
por srobles
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 :

Código: Selecionar todos

   If UCase(.Cells(linha, coluna).Value) Like UCase(valor_pesq) Then
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