Ayuda macro excel algo complejo

encontré en el foro de excel el siguiente código y por fortuna me sirve ya que necesito algo parecido

Public valor
Public viejo
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Column = 2 Then
ubica = Target.Address
viejo = Target.Value
Target.Select
Application.EnableEvents = False
Target.Value = Target.Value + valor
Sheets("hoja1").Range(ubica).Offset(0, -1).Value = Sheets("hoja1").Range(ubica).Offset(0, -1).Value - viejo
Application.EnableEvents = True
valor = Target.Value
End If
End Sub 
'luismondelo

llink código usuario


http://www.todoexpertos.com/categorías/tecnología-e-internet/software-y-aplicaciones/microsoft-excel/respuestas/uawy8x9qbojzo/inconveniente-código-macro-excel-al-intentar-restar?board=true


es verdad el usuario que puso el código dice que tiene un error y yo copie el código lo ejecute y el error es verdad esto es lo que el usuario escribió que debe hacer para que funcione correctamente
en si lo que hace este código es que cada vez que ingreso un valor por
decir b1 el me le resta a el campo a1 elcodigo si en b1 ingrese 10 el le
resta a a1 y después ingreso 10 de nuevo la casilla b1 queda en 20
hasta hay lo hace bien pero si voy a restar en en b2 i ingreso 5 el me
lo resta a a2 eso lo hace bien el problema es que en la casilla b2 no
queda 5 si no que me toma el ultimo valor anterior casilla osea queda 25
y si hago esto mismo en b3 y ingreso 5 entonces queda 30 entonces lo
que necesito es que solo acumule el valo que se le ingresa a cada
casilla queridos expertos

1 Respuesta

Respuesta
1

Dado que la macro la hice yo, yo también mando la solución:

Copia todo esto dentro del objeto hoja que estás tratando y hará lo que solicitas cuando modifiques cualquier celda de la columna B de esa hoja.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
valor = Target.Value
Application.EnableEvents = False
Target.Offset(0, -1).Value = Target.Offset(0, -1).Value - valor
Target.Value = Target.Value + viejo
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
viejo = Target.Value
End Sub

no olvides finalizar la consulta

hola amiguito el código esta bien pero hay un problemita necesito que si en b1 ingreso 5 el se lo resta a a1 y si después ingreso 10 en b1 entonces me quede 15 me valla acumulando los valores por cada casilla independiente y me lo reste no

Lo acabo de probar un funciona perfectamente acumulando los datos aunque nos cambiemos de línea. Asegúrate que has copiado las dos macros.

<div id="wrc-float-icon" style="z-index: 2147483646; left: 15px; top: 15px; width: 42px; height: 42px; background-image: url('safari-extension://com.avast.wrc-6H4HRTU5E3/fc0c2601/images/float/green-1.png'); position: fixed; display: none;"> </div>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas