Results 1 to 8 of 8

Thread: modificar fórmula desde vba

  1. #1
    Board Regular
    Join Date
    Jun 2002
    Location
    N 19° 25' 57.388'' O 99° 7' 59.548''
    Posts
    62
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default modificar fórmula desde vba

    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.
    Siempre es más fácil
    hacer las cosas, del modo más difícil...

  2. #2
    Board Regular DanteAmor's Avatar
    Join Date
    Dec 2018
    Location
    México
    Posts
    3,993
    Post Thanks / Like
    Mentioned
    38 Post(s)
    Tagged
    11 Thread(s)

    Default Re: modificar fórmula desde vba

    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
    Regards Dante Amor

  3. #3
    Board Regular
    Join Date
    Jun 2002
    Location
    N 19° 25' 57.388'' O 99° 7' 59.548''
    Posts
    62
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default Re: modificar fórmula desde vba

    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
    Siempre es más fácil
    hacer las cosas, del modo más difícil...

  4. #4
    Board Regular
    Join Date
    Jun 2002
    Location
    N 19° 25' 57.388'' O 99° 7' 59.548''
    Posts
    62
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default Re: modificar fórmula desde vba

    ..y me disculpo por no haber sabido incluir el código para que se viera como el tuyo.
    Siempre es más fácil
    hacer las cosas, del modo más difícil...

  5. #5
    Board Regular DanteAmor's Avatar
    Join Date
    Dec 2018
    Location
    México
    Posts
    3,993
    Post Thanks / Like
    Mentioned
    38 Post(s)
    Tagged
    11 Thread(s)

    Default Re: modificar fórmula desde vba

    Quote Originally Posted by Samuel Cano View Post
    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.
    Regards Dante Amor

  6. #6
    Board Regular DanteAmor's Avatar
    Join Date
    Dec 2018
    Location
    México
    Posts
    3,993
    Post Thanks / Like
    Mentioned
    38 Post(s)
    Tagged
    11 Thread(s)

    Default Re: modificar fórmula desde vba

    Quote Originally Posted by Samuel Cano View Post
    ..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

  7. #7
    Board Regular
    Join Date
    Jun 2002
    Location
    N 19° 25' 57.388'' O 99° 7' 59.548''
    Posts
    62
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default Re: modificar fórmula desde vba

    Apuntado!, gracias!
    Siempre es más fácil
    hacer las cosas, del modo más difícil...

  8. #8
    Board Regular DanteAmor's Avatar
    Join Date
    Dec 2018
    Location
    México
    Posts
    3,993
    Post Thanks / Like
    Mentioned
    38 Post(s)
    Tagged
    11 Thread(s)

    Default Re: modificar fórmula desde vba

    Un placer ayudarte. Gracias por los comentarios.
    Regards Dante Amor

Some videos you may like

User Tag List

Tags for this Thread

Like this thread? Share it with others

Like this thread? Share it with others

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •