Fernando,
Bom Dia!
Não se preocupe quanto às perguntas. É natural para quem, está querendo aprender. Aconselho a você a procurar bons livros de VBA para entender melhor os comandos dessa poderosa linguagem de programação. Você não terá diculdades de encontrar na internet milhares de apostilas, livros, CD's e DVD's sobre o assunto. às vezes fica um pouco difícil explicar comandos, mas vou tentar simplificar:
'Aqui estão sendo criadas duas variáveis do tipo Long (um dos tipos do VBA). A variável UltimaLinha que servirá para armazenar a última linha com dados existente na planilha _
e a variável i que servirá como contador dentro do laço FOR
Dim UltimaLinha, i As Long
'Aqui é armazenado, na variável criada, o número da última linha com dados existente na aba AcompanhamentoProcesso, pela coluna B (o 2 do comando).
Para facilitar, execute, na interface do Excel, o seguinte: posicione o cursor na última linha da coluna B e depois utilize o comando CTRL + Seta para cima. O Excel sele-
cionará a primeira célula com dados (de baixo para cima). Pois bem, é isso que está sendo feito via código VBA.
UltimaLinha = Sheets("AcompanhamentoProcesso").Cells(Cells.Rows.Count, 2).End(xlUp).Row
'Aqui estamos garantindo que os dados comecem sempre na linha 4 (primeira linha com dados da coluna que queremos procurar. O laço FOR começará pela linha 4 e vai
até a última linha com dados que está armazenada na variável. Se a última linha for menor que 4 (por exemplo, se estiver tudo vazio), ocorrerá um erro logo na primeira
linha do comando FOR pois ele não poderá fazer FOR i = 4 to UltimaLinha se UltimaLinha for menor que o começo que é 4.
If UltimaLinha < 4 Then UltimaLinha = 4
'Aqui estamos verificando se existe alguma coisa digitada no combo (pois o usuário pode começar a digitar e depois se arrepender e apagar tudo). Se não houvesse
esse comando, quando o usuário começasse a digitar um nome a propriedade Caption do Label é atribuída. Se ele apagasse, continuaria mostrando o que foi encontrado, mesmo
não contendo nada no combo.
If cbNomeParte = "" Then Lbl_Cel.Caption = ""
'Aqui é iniciado o laço FOR. Inicia-se o mesmo, atribuindo inicialmente a variável contadora i com o número da primeira linha com dados da coluna que estamos trabalhando. No
caso específico a linha 4. Estamos dizendo ao processador o seguinte: Execute tudo que estiver entre o FOR e o NEXT, "x" vezes (UltimaLinha - 4), começando a contar de quatro até o número que está armazenado na variável UltimaLinha. Então, na primeira passagem do ponteiro do processador por essa linha, é atribúido, a variável i, o número 4 e vai sendo executada linha a linha até que ele encontra o comando NEXT. Daí é atribúido 5, 6, 7, etc, até que a condição do FOR é satisfeita, ou seja, quando i for igual a UltimaLinha.
For i = 4 To UltimaLinha
'Aqui se verifica se o que está contido na célula B + o número da linha (variável i contadora, atribuída na linha anterior do comando FOR) é igual ao que foi selecionado no Combo. Se for, prossegue para a próxima linha.
If Range("B" & i).Value = cbNomeParte.Value Then
'Aqui, uma vez que passou pela linha anterior, então encontramos uma coincidência de valores, logo, precisamos mostrar no Label, através da prorpeiade Caption, onde foi que
essa coincidência foi encontrada. Como estamos procurando na coluna B, dizemos que o Caption é igual a B + a linha onde foi encontrada a coincidência (variável i).
Lbl_Cel.Caption = "B" & i
'Aqui, como você pediu para deixar o cursor na célula onde fosse encontrado o nome, apenas selecionamos a célula encontrada. Coluna B + a variável i.
Range("B" & i).Select
'Os dois comandos seguintes, finalizam o IF e o FOR. Se a condição do FOR ainda não esrtiver sarisfeita, o laço é reiniciado. Se estiver satisfeita, o ponteiro sai do laço e vai direto para o End Sub, finalizando a execução.
End If
Next
Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)
Atenciosamente
Wagner Morel
Postado : 02/02/2013 12:06 pm