Notifications
Clear all

Duvida Caixa de Texto

7 Posts
2 Usuários
0 Reactions
1,390 Visualizações
(@celri_33)
Posts: 208
Reputable Member
Topic starter
 

Bom dia

Pessoal preciso de uma ajuda, o código abaixo faz um auto filtro em uma caixa de texto que tenho em minha planilha, mas so esta funcionando com texto, como posso fazer para ele buscar números??

Segue:

Private Sub Coleta_Change()
Selection.AutoFilter Field:=3, Criteria1:=CStr("*" + Coleta.Text) + "*"
End Sub

Se precisar enviar a planilha, envio.

 
Postado : 18/10/2016 7:40 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Celri, utilizar wildcard com numeros é meio complicado, eu já precisei e não encontrei o exemplo que tinha, mas pelas instruções estou supondo que está utilizando um modelo igual a este ( http://guiadoexcel.com.br/lista-com-fil ... omatico-2/), então baseando na solução apresentada no link http://stackoverflow.com/questions/3036 ... -field-jus, troque a sua rotina pela a abaixo, só lembre de colocar o nome da aba na linha, With Worksheets("NomeDaSuaAba").
Faça os testes e veja se é isto :

Private Sub Coleta_Change()
  
    Dim a As Long, aTMPs As Variant, dVALs As Object
    Dim sValor
    
    sValor = Coleta.Text

    Set dVALs = CreateObject("Scripting.Dictionary")
    dVALs.CompareMode = vbTextCompare

    With Worksheets("NomeDaSuaAba")
        
        'If .AutoFilterMode Then .AutoFilterMode = False
        
        With .Cells(1, 1).CurrentRegion
            'build a dictionary so the keys can be used as the array filter
            aTMPs = .Columns(1).Cells.Value2
            
            For a = LBound(aTMPs, 1) + 1 To UBound(aTMPs, 1)
                Select Case True
                    Case Not CBool(Len(aTMPs(a, 1)))
                        dVALs.Item(Chr(61)) = Chr(61)   'blanks
                    'Case CStr(aTMPs(a, 1)) Like "1*"
                    Case CStr(aTMPs(a, 1)) Like sValor + "*"
                        'The set of numbers have to be strings in the array
                        If Not dVALs.Exists(aTMPs(a, 1)) Then _
                            dVALs.Add Key:=CStr(aTMPs(a, 1)), Item:=aTMPs(a, 1)
                    Case Else
                        'no match. do nothing
                End Select
            Next a

            'test the array
            'Dim k As Variant
            'For Each k In dVALs.Keys
            '    Debug.Print k & " - " & dVALs.Item(k)
            'Next k

            'filter on column B if dictionary keys exist
            If CBool(dVALs.Count) Then _
                .AutoFilter Field:=1, Criteria1:=dVALs.Keys, _
                                      Operator:=xlFilterValues, VisibleDropDown:=True

            'data is filtered on 614* and blanks (column B)
            'Perform work on filtered data here

        End With
       ' If .AutoFilterMode Then .AutoFilterMode = False
    End With

    dVALs.RemoveAll: Set dVALs = Nothing
  
End Sub

[]s

 
Postado : 18/10/2016 12:38 pm
(@celri_33)
Posts: 208
Reputable Member
Topic starter
 

Ola Mauro Coutinho, a rotina deu erro :

For a = LBound(aTMPs, 1) + 1 To UBound(aTMPs, 1)

 
Postado : 18/10/2016 1:59 pm
(@celri_33)
Posts: 208
Reputable Member
Topic starter
 

Segue print:

 
Postado : 18/10/2016 2:00 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Só pelo print e sem a identificação do erro fica dificil, cheguei a aplicar e testar no modelo que indiquei e não chegou a dar nenhum erro utilizando esta rotina na coluna "A" Código.
Se possível anexe seu modelo reduzido e compactado para analise.

[]s

 
Postado : 18/10/2016 3:31 pm
(@celri_33)
Posts: 208
Reputable Member
Topic starter
 

Ola Mauro Coutinho, boa tarde!

Desculpa a demora, segue anexo.

 
Postado : 19/10/2016 12:31 pm
(@celri_33)
Posts: 208
Reputable Member
Topic starter
 

Bom dia pessoas!

Encontrei uma solução temporária, acrescentando uma barra no final do numero, assim o código lê, mas gostaria ainda de saber como faz para ler números.

 
Postado : 24/10/2016 7:37 am