Vídeo recomendado
https://youtu.be/diWPPPhW-9E

VBA LISTBOX LOOP

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Ilathieri
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Dom Jan 13, 2019 7:08 pm

VBA LISTBOX LOOP

Mensagem 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.
Anexos
investimento.png
investimento.png (12.71 KiB) Exibido 2225 vezes
contenha.png
contenha.png (68.11 KiB) Exibido 2225 vezes
code.png
code.png (5.4 KiB) Exibido 2225 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

Re: VBA LISTBOX LOOP

Mensagem 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


Responder