modificar fórmula desde vba

Samuel Cano

Board Regular
Joined
Jun 24, 2002
Messages
62
Saludos a todos, explico mi asunto:

Inicio con una celda vacía, luego mediante un proceso coloco por ejemplo 100, lo que pido por favor, es modificar mediante vba la fórmula agregando cantidades que se sumen o resten, es decir: la celda que tenía 100 si le resto 25, deje la fórmula como '= 100 -25' y si resto otros 10 la fórmula sea '= 100 -25 -10' .. ojalá me explique..

En mis intentos, al modificar la fórmula anterior, me la deja como '= 75 -10' es decir ejecuta la primera operación y solo agrega el nuevo elemento cuando necesito conservar toda la historia de la fórmula..

Mis últimos intentos generan un error 1004.. y ya me emboté. No sé por dónde resolverlo.

Por lo anterior, agradezco cualquier ayuda, cualquier idea. Muy amables. :)
 

Excel Facts

Lock one reference in a formula
Need 1 part of a formula to always point to the same range? use $ signs: $V$2:$Z$99 will always point to V2:Z99, even after copying
Pon el siguiente código en los eventos de la hoja.
(Presiona click derecho sobre la pestaña de la hoja, en el menú selecciona ver código, en el panel pega el código)

Funciona de la siguiente manera. Si escribes un valor en la celda B2 la fórmula suma en la celda D2 de manera automática, si escribes en la celda C2 la fórmula resta.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target.Value = "" Then Exit Sub
    
    If Not Intersect(Target, Range("B2:C2")) Is Nothing Then
        If Target.Address(False, False) = "B2" Then sig = "+" Else sig = "-"
        If Range("D2").Value = "" Then
            Range("D2").Formula = "=" & Target.Value
        Else
            Range("D2").Formula = Range("D2").Formula & sig & Target.Value
        End If
    End If
End Sub
 
Upvote 0
DanteAmor, muchísimas gracias por ayudarme.

Desesperado se me ocurrió concatenar la propiedad .Formula de las celdas ORIGEN y DESTINO y conseguí armar un resultado funcional que al menos, no genera error con números negativos; el código es rudimentario donde está limitado a negativos pues tiene el signo en el código y, estaba por buscar ampliarlo para positivos..

Es ahí es donde entras en escena y te agradezco nuevamente, porque el código que me compartes me resuelve que sean + ó -, sólo necesito estudiarlo para adaptarlo.


Dejo fragmento del código que hice, con la esperanza que aún con sus limitaciones, sirva a alguien más:

' La siguiente variable recibe el valor a sumar o restar (la celda destino que puede estar vacía o tener un valor previo)

importeADJ = Cells(filaOrig, "I").Formula

' si destino tiene fórmula
If Cells(filaEmprFecha, "G").HasFormula Then

' omite SIGNO de igual (=)
Cells(filaEmprFecha, "G").Formula = Cells(filaEmprFecha, "G").Formula & " -" & importeADJ
Else

' pone SIGNO de igual (=)
Cells(filaEmprFecha, "G").Formula = "= " & Cells(filaEmprFecha, "G").Formula & " -" & importeADJ

End If

Abrazo desde la CDMX
 
Upvote 0
DanteAmor, muchísimas gracias por ayudarme.

Desesperado se me ocurrió concatenar la propiedad .Formula de las celdas ORIGEN y DESTINO y conseguí armar un resultado funcional que al menos, no genera error con números negativos; el código es rudimentario donde está limitado a negativos pues tiene el signo en el código y, estaba por buscar ampliarlo para positivos..

Es ahí es donde entras en escena y te agradezco nuevamente, porque el código que me compartes me resuelve que sean + ó -, sólo necesito estudiarlo para adaptarlo.


Dejo fragmento del código que hice, con la esperanza que aún con sus limitaciones, sirva a alguien más:

' La siguiente variable recibe el valor a sumar o restar (la celda destino que puede estar vacía o tener un valor previo)

Code:
importeADJ = Cells(filaOrig, "I").Formula

' si destino tiene fórmula
If Cells(filaEmprFecha, "G").HasFormula Then                                                    

    ' omite SIGNO de igual (=)
    Cells(filaEmprFecha, "G").Formula = Cells(filaEmprFecha, "G").Formula & " -" & importeADJ   
Else

    ' pone SIGNO de igual (=)
    Cells(filaEmprFecha, "G").Formula = "= " & Cells(filaEmprFecha, "G").Formula & " -" & importeADJ   

End If
Abrazo desde la CDMX

Mientras te sirve todo código es bienvenido, posteriormente lo podrás ir adecuando.
 
Upvote 0
..y me disculpo por no haber sabido incluir el código para que se viera como el tuyo. :(

No te preocupes, para poner le código, solamente selecciona el icono # (wrap CODE tags around selected text) y pones dentro tu código.

Saludos
 
Upvote 0

Forum statistics

Threads
1,223,933
Messages
6,175,476
Members
452,646
Latest member
tudou

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top