Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Praticando VBA - Soma Total

Boa tarde!

Estou praticando o uso das fórmulas usuais do Excel no VBA e surgiu uma dificuldade. Quero fazer a soma total de uma coluna em que os valore de células variam. A principio utilizei um código simples, abaixo, e consegui um resultado, mas não completamente satisfatório, já que eu tenho que informar quantas células devem ser contadas.

Sub Calcular_Soma2()    
    Dim r As Integer
    r = Range("B1").Value 
    Range("C1").Value = WorksheetFunction.Sum(Range("A1:A" & r))
End Sub

Consegui também um código que funcionou muito bem pra contagem de células não vazias, conforme abaixo.

Sub Macro1()

varColuna = 1 ' Coluna que será verificado
varLinha = 1 'Linha inicial que será verificado
varConteudo = 1
Do While varConteudo <> Empty 'continua a verificar se conteudo for diferente de vazio
   varLinha = varLinha + 1 'contador de linha
   varConteudo = Cells(varLinha, varColuna).Value 'grava o valor da celula
Loop

End Sub

A dúvida é: Como incluir o contador de linhas na fórmula de soma total?

Agradeço desde já!

Grande abraço

1 resposta
solução!

Olá,

Bom, a parte mais difícil você já fez, bata você inserir um código dentro do outro:

Sub Calcular_Soma2()    
    Dim r As Integer

    varColuna = 1 'Coluna que será verificado'
    varLinha = 1 'Linha inicial que será verificado'
    varConteudo = 1 'existem outras formas de fazer essa verificação, mas essa funciona também
    'varConteudo = Cells(varLinha, varColuna).Value 'essa já seria uma outra fórmula, você não precisa usar 1 arbitrariamente, você pode já pegar o valor real da célula (1,1)'
    Do While varConteudo <> Empty 'continua a verificar se conteudo for diferente de vazio >> você também poderia utilizar varConteudo <> "" pois as vezes o Excel confunde Empty com ""'
       varLinha = varLinha + 1 'contador de linha'
       varConteudo = Cells(varLinha, varColuna).Value 'grava o valor da celula'
    Loop
    'Quando sair do While sua variável varLinha vai ter o número da linha vazia'
    Range("C1").Value = WorksheetFunction.Sum(Range("A1:A" & varLinha)) 'basta usar aqui varLinha, que possui a última linha'
End Sub

Abs!