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.
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.
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á 👍🏻
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.
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.
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.
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.
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?
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.
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?
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.
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)
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
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.
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?
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?
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
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
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
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 !
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?
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
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")
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
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.
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
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
Do melhor que já vi. Parabéns.
Obrigado
Excelente conteúdo! Inscrito, curtido, e alertado!
Obrigado
Muito bom! Você poderia fazer um vídeo explicado melhor o uso do array?
Boa..
Eu como iniciante iria gostar muito 👍🏻
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.
@@CanalSGP Concordo e agradeço a atenção. Estou sempre acompanhado o canal. É que achei um pouco confuso. Obrigado!
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.
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á 👍🏻
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.
@@CanalSGP muito obrigado pela explicação 👍🏻
De nada
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?
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.
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.
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.
@@CanalSGP muito obrigado pela resposta e, de novo, parabéns pelo trabalho!
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?
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.
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?
Boa tarde, obrigado, não implica para transferir os dados para outros objetos para edição.
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?
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.
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)
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.
Isto consigo que este comando rode em outra planilha ?
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
pode disponibilizar essa planilha ?
grato
Boa tarde, qual e-mail para envio.
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
eu posso usar esse codigo em um modulo ou tem que ser direto no form?
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.
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?
Boa noite, não entendi exatamente o que deseja fazer.
@@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
Bom dia, para referenciar uma guia é pelo nome interno do vba. Geralmente é planilha seguido do número da guia.
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?
Bom dia, é difícil saber exatamente, talvez seja algo nos registros na planilha.
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
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
Obriga por responder
Fico doida com isso.
Muito obrigado.
Só mais uma coisa.
Eu coloco esse código no segundo For né
Desculpa só nova nisso.
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
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 !
Boa tarde, que bom que está aprendendo, de outro arquivo acredito que não vai dar certo este procedimento.
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?
Bom dia, pela mensagem acredito que seja objeto com nome errado.
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
Boa noite, não testei algo assim ainda, talvez a função conte.ses com a data como critério.
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
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
@@CanalSGP Muito obrigado irmão! Nem me lembrei do "or" - começando aprender agora o vba no excel
De nada
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.
Like 202
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
Caramba ficou super rápido a minha planilha kkkk com filtro era meio lenta.
Bom dia, que bom, geralmente os array ajudam a melhorar a eficiência dos filtros.
Sim, só que eu enfrentei uma base de erros por causa dos filtros
Se a planilha estiver com filtros o array da erro e fecha a planilha
Tive que usar auterfilter
Boa tarde, mas pode colocar um comando para retirar o auto filtro antes de executar o array também.
Só faltou pesquisar entre datas pra ficar sensasional
Boa noite, obrigado, tem outro vídeo que foi abordado com datas. Segue link: th-cam.com/video/hdUnCg-fZbg/w-d-xo.html
@@CanalSGP Eu achei ficou sensasional a minha planilha, melhor filtro que eu ja fiz usando seus tutorias.
Muito obrigado
Que bom.
MESTRE, TENTEI POR O CODIGO SOMENTE EM BOTÃO FILTRAR, POREM NÃO FUNCIONA, PUXA SOMENTE O GERAL
Bom dia, se não tiver critérios vai retornar todos os registros.
Erro em tempo de execução '9'
Subscrito fora do intervalo 🤡
Boa noite, muito provável que seja erro de referência a área capturada da planilha ou ao array.
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
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.
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.
Bom dia, solicite a planilha de exemplo do vídeo nos contatos do site do canal, link na descrição do vídeo.