Cálculo automático por Macro sem fórmula na célula

Vamos supor que eu tenha uma tabela com colunas A , B e C. As colunas A e B, irão receber dados e C, por exemplo, é a soma de A + B, se ambos forem preenchidos.

Pergunta: Existe alguma maneira de uma Macro preencher a célula Cn se dados forem preenchidos em An e Bn, e Cx se Ax e Bx forem preenchidos, etc.

Sei que posso por a fórmula para o cálculo, porém gostaria de deixar a planilha limpa com aspecto mais elegante sem ter que definir o tamanho da tabela, com a repetição da fórmula em todas as linhas.

Isto é possível ?

Creio que o Grafeno tem alguma dica!

@Grafeno, bom dia
Gostaria de um exemplo de como fazer uma macro com funções (não escritas - poderia ser uma soma) arquivadas em uma célula.
Obrigado/Rosano

@Rosano, abra uma pergunta detalhando o que deseja. O Ask funciona por pergunta/resposta.Quando uma questão é respondida e marcada como aceita, ela está encerrada.

Obrigado, @Grafeno.

Boa tarde,


Obrigado pela lembrança @Gilberto Schiavinatto!

No seu caso, acredito que a macro abaixo associada ao evento de planilha “Conteúdo alterado” resolva a questão.

  • Para associar uma macro salva na planilha ao evento: botão direito do mouse sobre a aba da planilha >>> “Eventos de planilha…” >>> evento “Conteúdo alterado” >>> botão “Macro”.

.
REM  *****  BASIC  *****

REM  >>> Evento de Planilha => Conteúdo Alterado <<<
Sub Plan1_ConteudoAlterado( oCelula )
Dim oPlan as Object
Dim nLin as Long, nCol as Long
Dim vCel As Double, vCelA As Double, vCelB As Double

	' Sair se não for uma célula
	If oCelula.ImplementationName <> "ScCellObj" Then Exit Sub
	
	nLin = oCelula.CellAddress.Row
	nCol = oCelula.CellAddress.Column
	vCel = oCelula.Value
	oPlan = oCelula.getSpreadsheet

	' Sair se a cél. estiver na linha 1 ou
	' se o valor da cél. for 0
	If vCel = 0 or nLin = 0 Then Exit Sub
	
	' Verificar se a cél. está na col. A 
	If nCol = 0 Then
		vCelB = oPlan.getCellByPosition( 1,nLin ).Value
		
		' Inserir a soma na col. C se a col. B não estiver vazia	
		If vCelB <> 0 Then
			oPlan.getCellByPosition( 2,nLin ).Value = vCel + vCelB
		End Sub
	End If 
	
	' Verificar se a cél. está na col. B 
	If nCol = 1 Then
		vCelA = oPlan.getCellByPosition( 0,nLin ).Value

		' Inserir a soma na col. C se a col. A não estiver vazia		
		If vCelA <> 0 Then
			oPlan.getCellByPosition( 2,nLin ).Value = vCelA + vCel
		End Sub
	End If 
End Sub

Atte,
Grafeno
1 Like

Ok @Grafeno, sabia que podia contar contigo. Vou tentar adaptar ao projeto, se vingar compartilho contigo.

Caro @Grafeno, como fazer cálculo automático por Macro com fórmula (não escrita em forma de macro*) arquivada em célula. Poderia dar um exemplo de uma macro de estoque, onde haverá entrada* e saída* de determinado produto (ABC). Por ser leigo*, não sei escrever macro.

@Grafeno, agradeço-lhe à oportunidade deste contacto.

Rosano