Notifications
Clear all

Procv com loop

7 Posts
2 Usuários
0 Reactions
1,472 Visualizações
Lorenzon
(@lorenzon)
Posts: 355
Reputable Member
Topic starter
 

Pessoal,

No meu projeto de Administração de despesas pessoais, no módulo de Cadastro de Programações, o usuário digita a data da programação em um textbox e é informado sobre o valor disponível para aquela data.

Isso é feito através do código abaixo:

Dim lastrow As Object

Set lastrow = Plan1.Range("g:g").End(xlUp)


lastrow.Offset(0, 0).Value = CDate(TextBox19.Text)

Label12.Visible = True
TextBox10.Visible = True

TextBox10.Text = [h1]

Mas eu queria um código substituísse o código acima, sem que precisasse cadastrar a data em uma célula e fazer o procv, mas sim fazer algo similar ao Procv, atraves de um loop.

Vejam o exemplo exemplo:

 
Postado : 04/03/2015 2:27 pm
selmo
(@selmo)
Posts: 236
Estimable Member
 

Substitua o seu código pelo seguinte:

Dim ultimalinha, i As Long 

Label12.Visible = True
TextBox10.Visible = True

    ultimalinha = Sheets("plan1").Cells(Cells.Rows.Count, 3).End(xlUp).Row
    If ultimalinha < 3 Then ultimalinha = 1

        For i = 3 To ultimalinha
            If Sheets("plan1").Range("c" & i) = TextBox19.Text Then
                    TextBox10.Text = Sheets("plan1").Range("d" & i)
                    Exit Sub
            End If
        Next
               

No básico ele percorre a coluna em busca do valor da textbox e ao encontrar o exibe,

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original."
Albert Einstein

 
Postado : 06/03/2015 2:05 pm
Lorenzon
(@lorenzon)
Posts: 355
Reputable Member
Topic starter
 

Perfeito!

 
Postado : 09/03/2015 10:11 am
Lorenzon
(@lorenzon)
Posts: 355
Reputable Member
Topic starter
 

Selmo,

E caso eu quiser somar com condições?

Exemplo:

No textbox1: DIVERSÃO
No textbox2: 25/02/2015

Dai o loop fará algo como o somar produto, onde ele ficará na coluna de centro de custo a variável do textbox1 e na coluna de Programações, a variável do textbox2, feito isso, o código somará os valores da coluna Movimentação, o valor que foi gasto com Diversão nessa data.

 
Postado : 09/03/2015 10:33 am
selmo
(@selmo)
Posts: 236
Estimable Member
 

Então o uso do controle For é bem abrangente, se combina-la com o If else então poderá testar quantas condiçoes e somar quantos itens achar nescessário, o código seguinte realiza o loop e se o critério for igual então soma

Dim Ultimalinha, i As Long
Dim Soma As Currency

Ultimalinha = Sheets("plan1").Cells(Cells.Rows.Count, 3).End(xlUp).Row
    If Ultimalinha < 3 Then Ultimalinha = 1

        For i = 3 To Ultimalinha
        'Verifica se o conteudo é igual ao da Textbox1 e Textbox 2, se for então realiza a soma
        If Sheets("plan1").Range("B" & i) = TextBox1.Text And Sheets("plan1").Range("A" & i) = TextBox2.Text Then
                 Soma = Sheets("plan1").Range("C" & i) + Soma 'Supondo que o valor esteja na coluna C
        End If
        Next
        Label1.Caption = Format(Soma, "R$ #,##0.00")

Em caso de duvida postei um modelo seguindo a linha de raciocinio.

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original."
Albert Einstein

 
Postado : 11/03/2015 2:19 pm
Lorenzon
(@lorenzon)
Posts: 355
Reputable Member
Topic starter
 

Selmo,

Desculpa-me pela demora em dar o retorno! Eu só vi agora!

O adaptarei no meu projeto e te falo.

 
Postado : 17/03/2015 1:26 pm
Lorenzon
(@lorenzon)
Posts: 355
Reputable Member
Topic starter
 

Perfeito!

 
Postado : 17/03/2015 2:22 pm