Botão com função de...
 
Notifications
Clear all

[Resolvido] Botão com função de Somar e Mesclar ao mesmo tempo

9 Posts
3 Usuários
0 Reactions
1,257 Visualizações
(@amartins)
Posts: 6
Active Member
Topic starter
 

Boa noite pessoal!

Venho até vocês solicitar uma ajuda para tentar criar uma função que já tentei diversas formas de resolver e até o momento não consegui uma solução.

Tenho uma planilha simples com uma coluna de "Valores Unitários" e uma com "Valor Total". A coluna "Valor Total" é uma fórmula simples que multiplica o "Valor Unitário" pela "Quantidade".

O que necessito é de ter um botão de formulário que execute um código no qual crie uma fórmula que some as células que irei previamente selecionar e em seguida mescle estas células e coloque na célula mesclada a fórmula de soma das células selecionadas.

Abaixo eu coloco um anexo com uma imagem explicando como eu preciso que ela funcione.

Já tentei de várias formas resolver este problema, e como não sou programador (apesar de conhecer um pouco sobre) eu não consegui uma solução.

Uma informação importante é que o código precisa funcionar para a versão do Excel 2007, infleizmente.

 
Postado : 24/01/2024 7:11 pm
Tags do Tópico
(@amartins)
Posts: 6
Active Member
Topic starter
 

Esqueci de falar que as células selecionadas para executar a função não são fixas, ou seja, eu irei selecionar a sequência que desejo e em seguida aplicar o botão com o código. No exemplo da imagem foi do D3:D5, mas poderia ser um sequência seguida de células diferentes dentro desta mesma coluna.

 
Postado : 24/01/2024 7:23 pm
(@osvaldomp)
Posts: 857
Prominent Member
 

Olá, @amartins.

Veja se atende.

Sub SomaMescla()
 Dim s As Double, c As Range
  For Each c In Selection
   s = s + c.Value: c.Value = ""
  Next c
  Selection.MergeCells = True
  ActiveCell.Value = s
End Sub

Osvaldo

 
Postado : 24/01/2024 8:02 pm
(@amartins)
Posts: 6
Active Member
Topic starter
 

Osvaldo,

Funcionou perfeitamente! 😀 😀 😀 

Seria possível ao invés de colocar o resultado da soma na célula mesclada colocar a fórmula da soma?

Desta forma, se por algum motivo o valor da célula unitária for alterado, também irá alterar o valor somado.

 
Postado : 24/01/2024 8:11 pm
(@osvaldomp)
Posts: 857
Prominent Member
 

Se entendi corretamente, não faz sentido o que você quer fazer.

Após a mesclagem das células não mais haverá célula unitária.

Por exemplo, no print que você colocou, após mesclar D3:D5, qual seria a tal célula unitária?

Osvaldo

 
Postado : 24/01/2024 9:16 pm
(@amartins)
Posts: 6
Active Member
Topic starter
 

@osvaldomp

Olá Osvaldo,bom dia!

Agradeço a ajuda e a pronta resposta e desculpe só te retornar hoje pela manhã.

As colunas "Valor Unitário" e "Quantidade" continuarão existindo na planilha. Tomando como base a última tabela da imagem que anexei ao post, vemos por exemplo que a célula C3 contem o valor de R$ 10,00. Se por algum motivo, por exemplo, o valor desta célula mudar para R$ 20,00, o valor final da soma feita com o código de VBA se manteria com o valor de R$ 140,00 ao invés de R$ 150,00, que seria o valor correto da soma após alterar o valor da célula C3.

O mesmo problema poderia ocorrer se houvesse mudança de valores na coluna de "Quantidade".

Por este motivo, o ideal seria que na célula que será mesclada pelo VBA o dado que ela irá conter seria uma fórmula e não um valor. 

OBS: Tentei até modificar o código que você enviou, mas os meus ajustes retornaram uma fórmula não funcional, veja o anexo abaixo.

 
Postado : 25/01/2024 8:58 am
(@osvaldomp)
Posts: 857
Prominent Member
 

Olá, @amartins. Bom dia.

Relendo o seu primeiro post vi que lá está claro que você queria uma fórmula e não o valor. Mas imagino que a observação que você colocou no print "Os valores serão somados e as células mescladas contendo o valor da soma" foi que me desviou da rota, pois foi essa a última instrução que captei e que acabou prevalecendo. Sorry.

Veja se o código abaixo atende.

Sub FórmulaMescla()
 Dim s As String, c As Range
  For Each c In Selection
   s = IIf(s = "", c.Formula, s & Replace(c.Formula, "=", "+"))
  Next c
  Application.DisplayAlerts = False
  Selection.MergeCells = True
  ActiveCell.Formula = s
End Sub

Quanto às instruções para alinhamento, se você manualmente formatar antes a coluna Total, aí não precisará colocar as instruções no código, é uma alternativa.

Osvaldo

 
Postado : 25/01/2024 11:59 am
(@amartins)
Posts: 6
Active Member
Topic starter
 

Olá @osvaldomp, boa noite!
Meu amigo, não precisa se desculpar! A culpa foi minha! Rs...
Eu escrevi 02 coisas diferentes e seria normal você se confundir por isso.

O código funcionou perfeitamente! Mais uma vez, muito obrigado mesmo!

OBS: Não sei pq o meu post no fórum ficou duplicado. Você acabou respondendo neste que não tem o nosso histórico de conversa. Como minha dúvida pode ser a dúvida de outras pessoas também, vou colocar a resposta com o seu código funcionando na outra postagem também.

 
Postado : 26/01/2024 2:00 am
(@amartins)
Posts: 6
Active Member
Topic starter
 

Devido ao fato do meu post ter ficado duplicado no fórum, estou postando abaixo a resposta do @osvaldomp que acabou sendo respondido na outra postagem duplicada.
Segue abaixo o código funcionando conforme eu havia solicitado:

Sub FórmulaMescla()
Dim s As String, c As Range
For Each c In Selection
s = IIf(s = "", c.Formula, s & Replace(c.Formula, "=", "+"))
Next c
Application.DisplayAlerts = False
Selection.MergeCells = True
ActiveCell.Formula = s
End Sub

 

 
Postado : 26/01/2024 2:18 am
(@stellarsurfer88)
Posts: 3
New Member
 

Para resolver esse problema, você pode criar um botão de formulário no Excel e associá-lo a um código VBA que realiza as seguintes ações: obter as células selecionadas, criar uma fórmula de soma para essas células, mesclar as células selecionadas e inserir a fórmula de soma na célula mesclada. Primeiramente, pressione ALT + F11 para abrir o Editor VBA. Em seguida, clique com o botão direito em "VBAProject (seu_nome_de_arquivo.xlsm)" e escolha "Inserir" > "Módulo". Cole o código VBA fornecido abaixo no módulo. Depois, clique com o botão direito no botão de formulário que você criou e escolha "Atribuir Macro". Selecione a macro "SomaEMescla" e clique em "OK". Agora, quando você clicar no botão de formulário, as células selecionadas serão mescladas e a fórmula de soma será inserida na célula mesclada. Certifique-se de selecionar as células corretas antes de clicar no botão.

 
Postado : 21/02/2024 4:59 am