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:
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
Perfeito!
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.
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
Selmo,
Desculpa-me pela demora em dar o retorno! Eu só vi agora!
O adaptarei no meu projeto e te falo.
Perfeito!