Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Somar Colunas ao Iniciar [RESOLVIDO]

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
ricardourias
Colaborador
Colaborador
Mensagens: 34
Registrado em: Seg Set 24, 2012 5:06 pm

Somar Colunas ao Iniciar [RESOLVIDO]

Mensagem por ricardourias »

Bom dia Pessoal,

Estou montando um cadastro de produtos com diversas planilhas. Gostaria que antes de iniciar a primeira UserForm (Menu Principal) o programa realiza-se diversas contas, princialmente de somar em algumas planilhas, por exemplo: na Planilha ProdutoA, somar todas as células da coluna A (as que contém valores) com a coluna B (as que contém valores) e o resultado fosse colocado na coluna C. E assim nas demais planilhas.

Será que vocês poderiam me ajudar?
Editado pela última vez por ricardourias em Seg Dez 17, 2012 2:47 pm, em um total de 1 vez.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Neri

Re: Somar Colunas ao Iniciar

Mensagem por Neri »

Boa tarde
Não é possivel fazer este cálculo ao abrir o arquivo?
Acredito que colocar uma função no initialize também fará o seu cálculo.
abraço


ricardourias
Colaborador
Colaborador
Mensagens: 34
Registrado em: Seg Set 24, 2012 5:06 pm

Re: Somar Colunas ao Iniciar

Mensagem por ricardourias »

Obrigado Neri, mas como eu realizo esta função, pois já tentei e não deu muito certo.

Por exemplo, eu tentei fazer deste jeito para atualizar somente uma planilha e em uma sequencia de linhas das colunas A e B:

Dim i As Integer
Dim j As Integer
For j = 2 To 50
Sheets("teste").Select
Range("C" & j).Value = Range("A" & j).Value + Range("B" & j).Value
Next j


ricardourias
Colaborador
Colaborador
Mensagens: 34
Registrado em: Seg Set 24, 2012 5:06 pm

Re: Somar Colunas ao Iniciar

Mensagem por ricardourias »

Pessoal,

Outra forma que tentei fazer foi diretamente no código da planilha:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim j As Integer
For j = 2 To 65000
Range("C" & j).Value = Range("A" & j).Value + Range("B" & j).Value
Next j
End Sub

Além de demorar uma eternidade para ler todas as linhas o programa emite uma mgs de erro de tempo de execução.

Alguém pode me ajudar?


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
BaptistaCG
Colaborador
Colaborador
Mensagens: 96
Registrado em: Seg Jul 30, 2012 10:33 pm
Localização: Sorocaba/SP

Re: Somar Colunas ao Iniciar

Mensagem por BaptistaCG »

Caro amigo,

Coloca ela ai pra gente dar uma olhada, e se possivel explique o que e quais celulas deseja somar..

Att.


Avatar do usuário
McJota
Colaborador
Colaborador
Mensagens: 26
Registrado em: Sáb Out 13, 2012 10:16 pm

Re: Somar Colunas ao Iniciar

Mensagem por McJota »

Tente usar este código.

Código: Selecionar todos

Private Sub UserForm_Initialize()
'Seleciona a célula de destino da soma
ThisWorkBook.WorkSheets("Plan1").Activate
Range("c1").Select
' Enquanto tiver algum valor na coluna A ou na coluna B, somará as duas colunas
While ActiveCell.Offset(0, -1) <> "" Or ActiveCell.Offset(0, -2) <> ""
ActiveCell.Value = ActiveCell.Offset(0, -1).Value + ActiveCell.Offset(0, -2).Value
' Ativa a próxima linha
ActiveCell.Offset(1, 0).Select
' Se não tiver nenhum valor na coluna A nem na coluna B, deletará a linha
If ActiveCell.Offset(0, -1) = "" And ActiveCell.Offset(0, -2) = "" Then
ActiveCell.EntireRow.Delete
End If
Wend
End Sub
Este código serve para somar os valores de uma planilha só!
Caso queira somar todas as planilhas, altere o valor da ("Plan1").

Abraço....


ricardourias
Colaborador
Colaborador
Mensagens: 34
Registrado em: Seg Set 24, 2012 5:06 pm

Re: Somar Colunas ao Iniciar

Mensagem por ricardourias »

McJota, boa tarde...

Gostaria de agradecer pelo ajuda que vc me deu, mas será que você poderia me ajudar ainda neste assunto? Na verdade o código que você me passou funcionou perfeitamente, porém tenho algumas dúvidas:

- Como eu faço para ler a coluna "V" (o comando que vc me passou faz a leitura da coluna "A", ou seja, ActiveCell.Offset(0, -1), quando eu substituo o -1 por -22 o programa apresenta um erro).

Será que voce poderia me ajudar?

Abs.

Ricardo


Avatar do usuário
BaptistaCG
Colaborador
Colaborador
Mensagens: 96
Registrado em: Seg Jul 30, 2012 10:33 pm
Localização: Sorocaba/SP

Re: Somar Colunas ao Iniciar

Mensagem por BaptistaCG »

Olá ricardourias

Pelo que entendi do codigo que o Mcjota criou,
ActiveCell.Offset(0,-1) significa que esta contando a partir da celula ativa que no caso é a c1, desta forma o -1 significa uma celula à esquerda da celula ativa pois a celula ativa é = 0, é assim que funciona a função offset ("LINHA", "COLUNA") então para fazer o que voce quer ativar na celula da coluna v, vc deve colocar "22" e não "-22"...
Estou online se quiser discutir o assunto.

Att...


Avatar do usuário
McJota
Colaborador
Colaborador
Mensagens: 26
Registrado em: Sáb Out 13, 2012 10:16 pm

Re: Somar Colunas ao Iniciar

Mensagem por McJota »

Boa tarde....
O exemplo de código que sugeri, soma as células da coluna A "Offset(0 ,-2)" e da coluna B "Offset(0,-1)"!
Caso queira somar as celulas da coluna V, seria "Offset(0, 19)", pois começa a contar a partir da coluna C, que é a célula ativa!

Abraço.....


Avatar do usuário
BaptistaCG
Colaborador
Colaborador
Mensagens: 96
Registrado em: Seg Jul 30, 2012 10:33 pm
Localização: Sorocaba/SP

Re: Somar Colunas ao Iniciar

Mensagem por BaptistaCG »

McJota escreveu:Boa tarde....
O exemplo de código que sugeri, soma as células da coluna A "Offset(0 ,-2)" e da coluna B "Offset(0,-1)"!
Caso queira somar as celulas da coluna V, seria "Offset(0, 19)", pois começa a contar a partir da coluna C, que é a célula ativa!

Abraço.....
Exatamente,

Eu confundi pois me empolguei no -22 :lol: é isso mesmo ricardourias se for utilizar a coluna v é (0,19).
E se quiser somar de outra planilha pode usar sheets("nome da planilha").cells(linha,coluna), mas o codigo .cell se comporta diferente do .offset a numeração é exata e não à partir da celula como .offset excelente sugestão McJota, gostei do uso de while wend que utilizou parabéns.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder