Análise do meu códi...
 
Notifications
Clear all

Análise do meu código VBA - iniciante

7 Posts
3 Usuários
0 Reactions
1,017 Visualizações
(@ponce2804)
Posts: 3
New Member
Topic starter
 

Boa tarde pessoal,
Estou fazendo um curso de vba pela internet, tentando aprender sozinho, na "raça" rsrs...

O primeiro exercício é para filtrar linhas através de um textbox.
O código é o abaixo, mas , ao depurar, deu erro na linha: lLinha = Cells( Rows.Count, 2).End(xlToUP).Row
O que o código faz é apenas fazer a filtragem da linha de acordo com oq é digitado....deve ser algo bobo..mas não consigo resolvÊ-lo...
Poderiam dar um help?
Se eu substituo a variável lLinha por um número qualquer , ao fazer o loop, o código roda legal...

Private Sub TextBox2_Change()
 Dim i As Long
    Dim lLinha As Long
 
    'Desliga a atualização automática do Excel
    Application.ScreenUpdating = False
 
    'Seleciona todas as células da  planilha
    Cells.Select
 
    'Exibe todas as  linhas da planilha
    Selection.EntireRow.Hidden = False
 
    `guarda última linha preenchida
     lLinha = Cells( Rows.Count, 2).End(xlToUP).Row
  

    'Seleciona a célula 
    Cells(3, 2).Select
 
    'Faz um loop por todas as colunas preenchidas a partir da segunda
    For i = 4 To lLinha
 
        'Verifica se a célula contém a informação pesquisada
        If (UCase(Cells(i, 2).Value) Like "*" & UCase(TextBox2.Text) & "*") = False Then
            'Oculta a coluna caso não tenha a informação pesquisada
            Rows(i).EntireRow.Hidden = True
        End If
    Next i
 
    'Seleciona novamente o textbox para digitar o próximo caracter
    TextBox2.Activate
 
    'Liga a atualização automática do Excel
    Application.ScreenUpdating = True
End Sub
 
Postado : 17/08/2015 10:18 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

A melhor forma seria postar seu arquivo modelo!!!

Você não disse qual erro!, não sabemos se o arquivo ou guia está com alguma proteção de senha, células mescladas etc...

Nem sempre é necessário usar um loop para filtrar(procurar, pesquisar) dados.

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/08/2015 1:17 pm
pfarias
(@pfarias)
Posts: 265
Reputable Member
 

E aew grande...

está acontecendo o seguinte, você escreveu o comentário iniciando com um "acento agudo" e não com o Apóstrofe.

Ele está assim:

`guarda última linha preenchida
lLinha = Cells(Rows.Count, 2).End(xlToUP).Row

quando deveria estar assim:

'guarda última linha preenchida
lLinha = Cells(Rows.Count, 2).End(xlToUP).Row

Pietro Farias

Se foi resolvido suas dúvidas, lembre se de marcar o tópico como RESOLVIDO.

ANALISTA X

 
Postado : 17/08/2015 1:55 pm
(@ponce2804)
Posts: 3
New Member
Topic starter
 

Segue o arquivo.
A aba chama " rentabilidade" e o textbox é o nomeado textbox2. O Textbox2 está com esse problema na macro.

ps: existe alguma macro que limpe os campos do textbox ao mesmo tempo? Tipo, aperto o botão e os dois textbox são limpos?

abraços e obrigado a todos! Sou iniciante e to aprendendo muito com vocês !

 
Postado : 17/08/2015 4:15 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

ponce, o que está acontecendo é devido a contagem das linhas, na rotina do Textbox2 você tem a instrução :

'guarda última linha preenchida
lLinha = Cells(Rows.Count, 2).End(xlToUP).Row - mas está utilizando o parametro xlToUP ou seja está contando as linhas acima o que gera "0" linhas, altere esta instrução para :
'guarda última linha preenchida
lLinha = Cells(Rows.Count, 2).End(xlDown).Row - assim contamos as linhas abaixo.

Uma outra obs é que no retorno de algumas formulas você tem um espaços a mais, tipo no valor da celula "B22" temos "XP TD NTNB IPCA 2019 6,68%" - entre XP e TD temos dois espaços, isto só influenciará no resultado da filtragem se não digitar os dois espaços.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 18/08/2015 10:28 am
(@ponce2804)
Posts: 3
New Member
Topic starter
 

MAuro, descobri o erro.
O erro era que o comando não era XltoUP e sim XlUP...
dessa forma, ele conta a ultima linha preenchida da coluna

 
Postado : 18/08/2015 11:24 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

MAuro, descobri o erro.
O erro era que o comando não era XltoUP e sim XlUP...
dessa forma, ele conta a ultima linha preenchida da coluna

Tem razão ponce, acabei passando batido, utilizando "XlUP" captamos a última linha preenchida enquanto "xlDown" pega a última celula da planilha.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 18/08/2015 11:35 am