Notifications
Clear all

calcular coluna ao digitar

9 Posts
2 Usuários
0 Reactions
1,142 Visualizações
(@valdecirrk)
Posts: 230
Reputable Member
Topic starter
 

bom dia

como fazer com que uma formula funcione para toda a coluna em VBA.
exemplo:

conforme eu for digitando um valor na coluna A, na coluna B me mostra o resulato,
Coluna A Coluna B
2 6 Forumala(2+4)

quero que a formula fique em macro e não na planilha.

 
Postado : 17/12/2013 6:09 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Considerando que é para somar, veja se é isso

Sub AleVBA_9950()
    Dim my_range As Range
     
    With Worksheets("Plan1")
        Set my_range = .Range("C2:C" & .Range("A65536").End(xlUp).Row)
        my_range.Formula = _
         "=sum(A2:B2)"
    End With
     
End Sub
 
Postado : 17/12/2013 6:17 am
(@valdecirrk)
Posts: 230
Reputable Member
Topic starter
 

na verdade essa é a formula.
quero que isso que você fez aconteça em toda a coluna. e quando figitado o valor faça o calculo.
=(B2/2)+C2+(D2/5)+(E2*0,3)+G2)

 
Postado : 17/12/2013 8:22 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Poste seu arquivo ou faça as adaptações necessária!

Sub AleVBA_9950()
    Dim my_range As Range
     
    With Worksheets("Plan1")
        Set my_range = .Range("C2:C" & .Range("A65536").End(xlUp).Row)
        my_range.Formula = _
         "==(B2/2)+C2+(D2/5)+(E2*0,3)+G2)"
    End With
     
End Sub

Att

 
Postado : 17/12/2013 8:38 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Poste seu arquivo ou faça as adaptações necessária!

Sub AleVBA_9950()
    Dim my_range As Range
     
    With Worksheets("Plan1")
        Set my_range = .Range("C2:C" & .Range("A65536").End(xlUp).Row)
        my_range.Formula = _
         "==(B2/2)+C2+(D2/5)+(E2*0,3)+G2)"
    End With
     
End Sub

Att

valdecirrk, use o modelo do Alexandre, mas remova um dos = de dentro da fórmula.
ou seja, isso:

"==(B2/2)+C2+(D2/5)+(E2*0,3)+G2)"

virará isso:

"=(B2/2)+C2+(D2/5)+(E2*0,3)+G2)"
 
Postado : 17/12/2013 9:06 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Pessoal perdoe me pelo equivoco :oops:

Sub AleVBA_9950()
    Dim my_range As Range
     
    With Worksheets("Plan1")
        Set my_range = .Range("C2:C" & .Range("A65536").End(xlUp).Row)
        my_range.Formula = _
         "=(B2/2)+C2+(D2/5)+(E2*0,3)+G2)"
    End With
     
End Sub

Se não for isso, por favor poste seu arquivo modelo.
Att

 
Postado : 17/12/2013 9:20 am
(@valdecirrk)
Posts: 230
Reputable Member
Topic starter
 

Os codigos acima não deram certo, e me passaram este e funcionou certinho.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lf
lf = Cells(65000, 1).End(xlUp).Row
If Not Intersect(Target, Me.Range("G2:G10000")) Is Nothing Then
Range("h2:h" & lf).FormulaR1C1 = "=(RC[-6]/2)+RC[-5]+(RC[-4]/5)+(RC[-3]*0.3)+RC[-1]" 'insere a formula na coluna toda
Range("h2:h" & lf).Copy 'copia a seleçaõ
.Select
ActiveCell.PasteSpecial xlPasteValues 'cola a seleção
Application.CutCopyMode = False 'limpa área de transferência
Cells(lf, 1).Select
End If

End Sub

 
Postado : 18/12/2013 5:15 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Creio que você queria no momento da digitação que fosse posto o valor (formula), na célula.

Da minha forma seria feito de uma única vez e não automático.

Eu fico feliz por ter resolvido.

Att

 
Postado : 18/12/2013 6:53 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Caso seja necessário reabrir o tópico, o autor poderá enviar uma MP para um dos moderadores solicitando o desbloqueio.

 
Postado : 18/12/2013 7:15 am