Notifications
Clear all

Gravar Resultado de uma função em outra célula

7 Posts
4 Usuários
0 Reactions
1,283 Visualizações
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
Topic starter
 

Prezados,

Tenho um pequeno problema que não consegui resolver. Acredito que para os amigos "feras" em VBA aqui será fácil. Na célula A1 e na célula B1 tenho valores inteiros. Em C1 tenho a soma normal desses valores inseridos por uma pequena função (UDF). O exemplo anexo é muito fácil porém a planilha de fato é muito complexa e necessita da mesma lógica. Ou seja: preciso que a fórmula inserida seja através de uma UDF (função própria) e que o resultado obtido (no caso o resultado da célula C1) seja também transportado para a célula G1 dentro da execução da própria função, no mesmo momento .

No arquivo anexo veja que comentei a linha

Range("G2").Value = SomarEsp(Valor1, Valor2)

Pois, quando a utilizo, o VBA retorna #VALOR!.

Bom... o que de fato é importante para mim: Que o resultado da função seja copiado para outra célula também, todavia, no mesmo momento da execução da função.

 
Postado : 20/04/2018 7:00 am
(@klarc28)
Posts: 0
New Member
 

Vejo esse problema de uma forma bem ingênua:

Na célula G1 colocar a fórmula:

=C1

 
Postado : 20/04/2018 7:13 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
Topic starter
 

klarc28,

Bom dia!

Obrigado pela resposta. Todavia, a necessidade é que o resultado calculado pela função, vá para outra célula, dentro da própria função UDF e no mesmo momento da sua execução.

 
Postado : 20/04/2018 7:17 am
(@xlarruda)
Posts: 0
New Member
 

Cara tentei alguma forma de incluir uma sub dentro de uma function mas sem sucesso..
A única forma que encontrei foi incluindo esse código na sua Plan1:

Option Compare Text
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim coluna, coluna2 As Long
Dim valor1, valor2 As String
Dim cont1 As Long
'Coluna da fórmula principal
coluna = 3 '$C
'Coluna da fórmula auxiliar
coluna2 = 7 '$G
cont1 = Len(Target.Address(False, False))
valor1 = Mid(Target.Formula, Application.WorksheetFunction.Find(",", Target.Formula) - cont1, cont1)
valor2 = Mid(Target.Formula, Application.WorksheetFunction.Find(",", Target.Formula) + 1, cont1)
If Target.Column = coluna And Target.Formula = "=SomarEsp(" & valor1 & "," & valor2 & ")" Then
Cells(Target.Row, coluna2).Value = Target.Formula
End If
End Sub

Porém não sei se vai te atender. Abrç!

 
Postado : 20/04/2018 9:18 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
Topic starter
 

xlarruda,

Boa tarde!

Muito obrigado pela resposta. Vou deixar aberto por mais alguns dias pois a solução não atende a necessidade.

 
Postado : 20/04/2018 10:34 am
(@edsonbr)
Posts: 0
New Member
 

Grande Wagner! Boa tarde.

Pelo visto esse problema é semelhante ao que o colega XLArruda passou quando quis tentar abrir um arquivo dentro de uma UDF (tópico Dúvida com ProcV) o que não é possivel.

UDF's são próprias para lerem coisas mas têm muitas limitações quando se espera que elas façam coisas. Então provavelmente terás se explorar outro caminho (Worksheet_Calculate, por exemplo).

 
Postado : 20/04/2018 10:48 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
Topic starter
 

EdsonBR,

Obrigado pela resposta. Acho que você está certíssimo amigo. Creio que isso mesmo.

 
Postado : 20/04/2018 12:19 pm