FILTRO de TEXTO AUTOMÁTICO com TRÊS TEXTBOX em Listbox Excel VBA

แชร์
ฝัง
  • เผยแพร่เมื่อ 28 ม.ค. 2025

ความคิดเห็น • 78

  • @CarlFritz24
    @CarlFritz24 2 ปีที่แล้ว +1

    Do melhor que já vi. Parabéns.

    • @CanalSGP
      @CanalSGP  2 ปีที่แล้ว

      Obrigado

  • @analistaribeiro
    @analistaribeiro 2 ปีที่แล้ว +1

    Excelente conteúdo! Inscrito, curtido, e alertado!

    • @CanalSGP
      @CanalSGP  2 ปีที่แล้ว

      Obrigado

  • @RaphaelGuimaraes2011
    @RaphaelGuimaraes2011 3 ปีที่แล้ว +3

    Muito bom! Você poderia fazer um vídeo explicado melhor o uso do array?

    • @SIDNEYFCD
      @SIDNEYFCD 3 ปีที่แล้ว

      Boa..
      Eu como iniciante iria gostar muito 👍🏻

    • @CanalSGP
      @CanalSGP  3 ปีที่แล้ว +2

      Boa noite, aos poucos vamos fazendo mais vídeos sobre uso de array. Esse vídeo já foi uma evolução de outro procedimento, agora um pouco mais curto e mais simples. Em cada vídeo vamos abordando os pontos mais importantes, para não deixar os vídeos muito longo também.

    • @RaphaelGuimaraes2011
      @RaphaelGuimaraes2011 3 ปีที่แล้ว +1

      @@CanalSGP Concordo e agradeço a atenção. Estou sempre acompanhado o canal. É que achei um pouco confuso. Obrigado!

    • @CanalSGP
      @CanalSGP  3 ปีที่แล้ว +1

      No início também quebrei a cabeça para entender, mas com o tempo fica mais fácil. No final do vídeo foi demonstrado como visualizar o array desenhado na memória do computador, para facilitar a compreensão.

  • @SIDNEYFCD
    @SIDNEYFCD 3 ปีที่แล้ว +3

    Olá, primeiramente agredecer e parabenizar pelo vídeo..
    Eu como sou iniciante tenho uma dúvida que acredito ser básica..
    No minuto 6:25 vc utiliza o codigo
    Criterio1 = Tproduto.text
    Eu poderia usar Tproduto.value?
    Qual é a diferença desse (.text) para (.value)?
    Obrigado desde já 👍🏻

    • @CanalSGP
      @CanalSGP  3 ปีที่แล้ว +2

      Bom dia, obrigado, pode ser .value também, no caso coloquei .text porque a variável Criterio1 é do tipo texto, mas funciona com os dois. Mas o ponto value tem mais chances de erro quando evolver número e texto no mesmo critério, neste caso seria mais seguro o .text, que o código captura exatamente o que consta no objeto, sem considerar o tipo de dado.

    • @SIDNEYFCD
      @SIDNEYFCD 3 ปีที่แล้ว +2

      @@CanalSGP muito obrigado pela explicação 👍🏻

    • @CanalSGP
      @CanalSGP  3 ปีที่แล้ว +1

      De nada

  • @brito2523
    @brito2523 2 ปีที่แล้ว +1

    Parabéns pelo conteúdo! Agradecido
    Tenho uma planilha que usa bastante formatação condicional. Teria como fazer com Array para acelerar o código?

    • @CanalSGP
      @CanalSGP  2 ปีที่แล้ว

      Bom dia, obrigado, a formatação em si não sei, mas pode utilizar array para fazer procedimentos de cálculo por exemplo. Evitando a cada cálculo ir na planilha pegar a informação, isso agiliza o código.

  • @kelbertlima1192
    @kelbertlima1192 2 ปีที่แล้ว

    Parabéns pelo trabalho! Muito bom! É difícil achar uma explicacao clara como a sua.
    Uma pergunta: Funciona só para uma letra por campo de busca?
    Copiei o seu código e se digito 2 ou mais algarismos em qualquer um dos campos, a busca nao funciona.

    • @CanalSGP
      @CanalSGP  2 ปีที่แล้ว +1

      Bom dia, obrigado, considera todas as letras digitadas no campo, mas é sequência, por exemplo, ab, onde no texto tiver as duas letras juntas vai retornar no filtro.

    • @kelbertlima1192
      @kelbertlima1192 2 ปีที่แล้ว +1

      @@CanalSGP muito obrigado pela resposta e, de novo, parabéns pelo trabalho!

  • @jeffersondasilvasantos9891
    @jeffersondasilvasantos9891 3 ปีที่แล้ว +2

    Parabéns pelo vídeo novamente. Mesmo usando array seria possível explicar esse mesmo filtro só que entre datas tbm usando array? Duas textboxes com data inicial e final?

    • @CanalSGP
      @CanalSGP  3 ปีที่แล้ว +1

      Bom dia, obrigado, vou verificar para gravar um vídeo sobre filtro entre datas. Aos poucos estamos trocando os vídeos antigos e trabalhando com códigos mais eficientes.

  • @saviocampeaolub6937
    @saviocampeaolub6937 2 ปีที่แล้ว

    show de bola, muito bom!
    É quando o usuário além de filtrar precisa editar o registro, isso implicaria em algo usando esse método de filtro?

    • @CanalSGP
      @CanalSGP  2 ปีที่แล้ว

      Boa tarde, obrigado, não implica para transferir os dados para outros objetos para edição.

  • @kaka080365
    @kaka080365 2 ปีที่แล้ว

    Muito útil a utilização do array. Mas seria possível utiliza-lo em uma listview?
    Você poderia fazer um vídeo mostrando como carregar uma listview usando
    array e filtra-lo também usando array?

    • @CanalSGP
      @CanalSGP  2 ปีที่แล้ว

      Bom dia, em listview o ganho de eficiência é pouco, porque não tem opção para carregar todo o array de uma vez para a listview, precisa carregar célula por célula.

  • @michelmartins5988
    @michelmartins5988 2 ปีที่แล้ว

    Olá boa tarde! Parabéns, muito boa sua explicação!!
    Uma dúvida, na minha ListBox está aparecendo somente o último valor da minha lista de produto, o que pode ser? (Obs: Minha ListBox tem somente uma coluna)

    • @CanalSGP
      @CanalSGP  2 ปีที่แล้ว

      Boa tarde, obrigado, é difícil saber exatamente a causa, talvez referência a área da planilha ou a captura da última linha que tem dados.

  • @jmarcelsp
    @jmarcelsp 2 ปีที่แล้ว

    Isto consigo que este comando rode em outra planilha ?

    • @CanalSGP
      @CanalSGP  2 ปีที่แล้ว

      Bom dia, este procedimento é somente para a planilha ativa, mas tem outro procedimento para filtrar dados de outro arquivo, segue link. th-cam.com/video/-NM5W5DqOiY/w-d-xo.html

  • @lmsvideos9903
    @lmsvideos9903 3 ปีที่แล้ว

    pode disponibilizar essa planilha ?
    grato

    • @CanalSGP
      @CanalSGP  3 ปีที่แล้ว

      Boa tarde, qual e-mail para envio.

    • @lmsvideos9903
      @lmsvideos9903 3 ปีที่แล้ว

      tenho uma planilha que com 3 mil linhas ela ja esta lenta pra fazer o preenchimento do listbox e os filtros entao nem se fala a lentidao kk

    • @lmsvideos9903
      @lmsvideos9903 3 ปีที่แล้ว

      eu posso usar esse codigo em um modulo ou tem que ser direto no form?

    • @CanalSGP
      @CanalSGP  3 ปีที่แล้ว

      Boa tarde, pode ser separado, mas vai precisar referenciar o formulário antes do nome da listbox. O procedimento deste vídeo funciona bem tranquilo com 50 mil linhas, testei até 100 mil.

  • @desvendandoiphone
    @desvendandoiphone ปีที่แล้ว

    Na parte do
    ListBox1.Clear
    ListBox1.ColumnCount = 7
    Como faço para especificar ja que tenho mais de uma guia no excel, tenho 3 planilhas ativas, como faço para especificar?

    • @CanalSGP
      @CanalSGP  ปีที่แล้ว

      Boa noite, não entendi exatamente o que deseja fazer.

    • @desvendandoiphone
      @desvendandoiphone ปีที่แล้ว

      @@CanalSGP Bom dia, tudo bem?
      Digamos assim eu tenho mais de uma planilha no meu excel, como faço para me direcionar a uma especifica

    • @CanalSGP
      @CanalSGP  ปีที่แล้ว

      Bom dia, para referenciar uma guia é pelo nome interno do vba. Geralmente é planilha seguido do número da guia.

  • @desvendandoiphone
    @desvendandoiphone ปีที่แล้ว

    Opa Bom dia, tudo ok?
    Funcionou, mas tem alguns nomes que ele não busca, tipo: Ademar, se eu digitar o A ele puxa, mas quando digito o AD ele ja some tudo.
    SABE ME DIZER OQ PODE SER?

    • @CanalSGP
      @CanalSGP  ปีที่แล้ว

      Bom dia, é difícil saber exatamente, talvez seja algo nos registros na planilha.

  • @crislaineribeiro1205
    @crislaineribeiro1205 2 ปีที่แล้ว

    oi me ajuda por favor . estou tentando carregar o list box somente se na coluna 13 as datas tiverem vencidas
    ' criterio para carregar os vencidos não sei se estou fazendo certo me da uma ajuda por favor
    If Coluna = "13" And Coluna

    • @CanalSGP
      @CanalSGP  2 ปีที่แล้ว

      Bom dia, precisa capturar a data da coluna para comparar, segue exemplo:
      Dim DataColuna13 as Date
      DataColuna13 = Arr(I, Coluna)
      If Coluna = "13" And DataColuna13

    • @crislaineribeiro1205
      @crislaineribeiro1205 2 ปีที่แล้ว

      Obriga por responder

    • @crislaineribeiro1205
      @crislaineribeiro1205 2 ปีที่แล้ว

      Fico doida com isso.
      Muito obrigado.
      Só mais uma coisa.
      Eu coloco esse código no segundo For né

    • @crislaineribeiro1205
      @crislaineribeiro1205 2 ปีที่แล้ว

      Desculpa só nova nisso.

    • @crislaineribeiro1205
      @crislaineribeiro1205 2 ปีที่แล้ว

      Só uma sugestão não poderia fazer um vídeo desse tema. "Vencimentos"
      Esse array é difícil iria nos ajudar muita gente mais aínda.
      Eu mesmo ia agradecer. Kkk

  • @rogeriolimadefreitas424
    @rogeriolimadefreitas424 2 ปีที่แล้ว

    Olá boa tarde !
    nesta linha:
    TL = WorksheetFunction.CountA(Planilha2.Range("A:A"))
    como saber o valor de TL se meus dados estão em outra planilha, ou seja, outro arquivo excel
    To aprendendo muito com seus videos !

    • @CanalSGP
      @CanalSGP  2 ปีที่แล้ว

      Boa tarde, que bom que está aprendendo, de outro arquivo acredito que não vai dar certo este procedimento.

  • @flavioaguiar5531
    @flavioaguiar5531 ปีที่แล้ว

    Bom dia, Sei que o vídeo já tem um ano, mas não encontrei alguém com a mesma dúvida que eu.
    Fiz tudo igual ao vídeo alterando apenas especificações da minha planilha. Entretanto, quando fui executar a macro, apareceu na parte do criterio1 um erro de execução 424 O objeto é obrigatório.
    O que eu fiz de errado?

    • @CanalSGP
      @CanalSGP  ปีที่แล้ว

      Bom dia, pela mensagem acredito que seja objeto com nome errado.

  • @laerciokreusch7588
    @laerciokreusch7588 3 ปีที่แล้ว

    Boa noite . Como faco para adicionar dados em uma tabela sem rdpetir data. Estou fazendo um cadastro de horas trabalhadas. Poderia lhe enviar pra vc dar uma olhada? Email?. Desde ja agradeco

    • @CanalSGP
      @CanalSGP  3 ปีที่แล้ว

      Boa noite, não testei algo assim ainda, talvez a função conte.ses com a data como critério.

  • @ivansoares7046
    @ivansoares7046 2 ปีที่แล้ว

    Por favor, me deem um help aqui: No exemplo abaixo como faço para formatar a coluna 3 e 4 conforme formatei a coluna 02 ?
    For i = LBound(Arr4, 1) To UBound(Arr4, 1)


    If VBA.UCase(Arr4(i, 1)) Like VBA.UCase("*" & (Criterio6) & "*") Then

    For Coluna = 1 To 4

    If Coluna "2" Then
    arrayFiltro4(Linha, Coluna) = Arr4(i, Coluna)

    End If

    If Coluna = "2" Then
    arrayFiltro4(Linha, Coluna) = VBA.Format(Arr4(i, Coluna), "#,##0.00")

    End If





    Next Coluna

    Linha = Linha + 1


    End If

    Next i

    • @CanalSGP
      @CanalSGP  2 ปีที่แล้ว +1

      Boa tarde, segue exemplo:
      If Coluna "2" or Coluna "3" or Coluna "4" Then
      arrayFiltro4(Linha, Coluna) = Arr4(i, Coluna)
      End If
      If Coluna = "2" or Coluna = "3" or Coluna = "4" Then
      arrayFiltro4(Linha, Coluna) = VBA.Format(Arr4(i, Coluna), "#,##0.00")
      End If

    • @ivansoares7046
      @ivansoares7046 2 ปีที่แล้ว +1

      @@CanalSGP Muito obrigado irmão! Nem me lembrei do "or" - começando aprender agora o vba no excel

    • @CanalSGP
      @CanalSGP  2 ปีที่แล้ว

      De nada

  • @MrOlisandre
    @MrOlisandre 11 หลายเดือนก่อน

    Bom dia
    Professor 1000, como faço para aparecer na listbox (valor)
    R$150,00 sendo que so aparece
    150.
    Ficaria grato se pudesse me ajudar.
    Gratidão pelos ensinamentos..
    Mais um inscrito.

    • @MrOlisandre
      @MrOlisandre 11 หลายเดือนก่อน

      Like 202

    • @CanalSGP
      @CanalSGP  11 หลายเดือนก่อน

      Boa tarde, obrigado. Vai ser igual ao formato da hora, vai precisar de mais um if. Ex:
      If Coluna = "Coluna para formatar" Then
      arrayFiltro(Linha, Coluna) = VBA.Format(Arr(i, Coluna), currency)
      End If

  • @lmsvideos9903
    @lmsvideos9903 3 ปีที่แล้ว

    Caramba ficou super rápido a minha planilha kkkk com filtro era meio lenta.

    • @CanalSGP
      @CanalSGP  3 ปีที่แล้ว +1

      Bom dia, que bom, geralmente os array ajudam a melhorar a eficiência dos filtros.

    • @lmsvideos9903
      @lmsvideos9903 3 ปีที่แล้ว

      Sim, só que eu enfrentei uma base de erros por causa dos filtros

    • @lmsvideos9903
      @lmsvideos9903 3 ปีที่แล้ว

      Se a planilha estiver com filtros o array da erro e fecha a planilha

    • @lmsvideos9903
      @lmsvideos9903 3 ปีที่แล้ว

      Tive que usar auterfilter

    • @CanalSGP
      @CanalSGP  3 ปีที่แล้ว

      Boa tarde, mas pode colocar um comando para retirar o auto filtro antes de executar o array também.

  • @Marcelo-qu5qi
    @Marcelo-qu5qi ปีที่แล้ว

    Só faltou pesquisar entre datas pra ficar sensasional

    • @CanalSGP
      @CanalSGP  ปีที่แล้ว

      Boa noite, obrigado, tem outro vídeo que foi abordado com datas. Segue link: th-cam.com/video/hdUnCg-fZbg/w-d-xo.html

    • @Marcelo-qu5qi
      @Marcelo-qu5qi ปีที่แล้ว +1

      @@CanalSGP Eu achei ficou sensasional a minha planilha, melhor filtro que eu ja fiz usando seus tutorias.
      Muito obrigado

    • @CanalSGP
      @CanalSGP  ปีที่แล้ว

      Que bom.

  • @jplima28arkanjo70
    @jplima28arkanjo70 4 หลายเดือนก่อน

    MESTRE, TENTEI POR O CODIGO SOMENTE EM BOTÃO FILTRAR, POREM NÃO FUNCIONA, PUXA SOMENTE O GERAL

    • @CanalSGP
      @CanalSGP  4 หลายเดือนก่อน

      Bom dia, se não tiver critérios vai retornar todos os registros.

  • @kauan.santosp
    @kauan.santosp ปีที่แล้ว

    Erro em tempo de execução '9'
    Subscrito fora do intervalo 🤡

    • @CanalSGP
      @CanalSGP  ปีที่แล้ว

      Boa noite, muito provável que seja erro de referência a área capturada da planilha ou ao array.

  • @jmarcelsp
    @jmarcelsp 2 ปีที่แล้ว

    Olá, o meu exemplo não deu certo
    Sub Filtro()
    'On Error GoTo Erro
    Dim TL As Double, Linha As Double, Coluna As Double, i As Double
    Dim Criterio1 As String, Criterio2 As String, Criterio3 As String
    Dim Arr As Variant
    Dim arrayFiltro()
    Criterio1 = TProduto.Text
    Criterio2 = TCodigo.Text
    Criterio3 = TNcm.Text
    ListBox1.Clear
    ListBox1.ColumnCount = 3
    ListBox1.ColumnWidths = "60;120;120"
    TL = WorksheetFunction.CountA(Planilha1.Range("A:A")) + 2
    Arr = Planilha1.Range("A4:D" & TL).Value
    TL = 1
    For i = LBound(Arr, 1) To UBound(Arr, 1)
    If VBA.UCase(Arr(i, 1)) Like VBA.UCase("*" & (Criterio1) & "*") And _
    VBA.UCase(Arr(i, 2)) Like VBA.UCase("*" & (Criterio2) & "*") And _
    VBA.UCase(Arr(i, 3)) Like VBA.UCase("*" & (Criterio3) & "*") Then
    TL = TL + 1
    End If
    Next i
    ReDim arrayFiltro(1 To TL, 1 To 3)
    Linha = 2
    For i = LBound(Arr, 1) To UBound(Arr, 1)
    If VBA.UCase(Arr(i, 1)) Like VBA.UCase("*" & (Criterio1) & "*") And _
    VBA.UCase(Arr(i, 2)) Like VBA.UCase("*" & (Criterio2) & "*") And _
    VBA.UCase(Arr(i, 3)) Like VBA.UCase("*" & (Criterio3) & "*") Then
    For Coluna = 1 To 7
    arrayFiltro(Linha, Coluna) = Arr(i, Coluna)
    Next Coluna
    Linha = Linha + 1
    End If
    Next i
    ListBox1.List = arrayFiltro()
    Call Cabeçalho
    Erase arrayFiltro()
    Arr = Empty
    Exit Sub
    Erro:
    MsgBox "Erro!", vbCritical, "FILTRO"
    End Sub
    Sub Cabeçalho()
    With ListBox1
    .AddItem
    .List(0, 0) = "CODIGO"
    .List(0, 1) = "PRODUTO"
    .List(0, 2) = "NCM"
    End With
    End Sub
    Private Sub TCodigo_Change()
    Call Filtro
    End Sub
    Private Sub TNcm_Change()
    Call Filtro
    End Sub
    Private Sub TProduto_Change()
    Call Filtro
    End Sub
    Private Sub UserForm_Initialize()
    Call Filtro
    End Sub
    Tive de reescrever e agora também está dando este erro "Subscrito fora do intervalo (Erro 9)"
    Grato

    • @CanalSGP
      @CanalSGP  2 ปีที่แล้ว

      Bom dia, pela mensagem de ser erro de referência ao nome de algum objeto, pode ser nome da planilha, listbox ou o nome de algum campo de critério.

  • @glabsonamorim2342
    @glabsonamorim2342 2 ปีที่แล้ว

    Eu fiz igualzinho, mesmo assim deu erro de execução, '-2147352571(80020005)"Não foi possível definir a propriedade Value. Tipo não correspondente.

    • @CanalSGP
      @CanalSGP  2 ปีที่แล้ว

      Bom dia, solicite a planilha de exemplo do vídeo nos contatos do site do canal, link na descrição do vídeo.