Ayuda código vba ejecuta una resta urgente

Queridos amigos tengo el siguiente problemita tengo este código

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'controla col H actualizando col G
If Not Intersect(Target, Range("H2:H2000")) Is Nothing Then
Target.Offset(0, -1) = Target.Value - Target.Offset(0, -1).Value
End If
End Sub

Lo que hace este código es cuando ingreso un numero en h2 el me le resta a la columna g2 pero el problema es un ejemplo ingreso en h2 el valor 5 y tengo en g2 100 entonces h2 me le resta 5 y el resultado es -95 si después ingreso otro 5 eb h2 el resultado vuelve a 100 entonces loq ue necesito es me reste cada valor que ingreso y ademas de eso que me valla acumulando los valores osea reste 5 y después ingrese 5 entonces en la casilla quedaría 10 gracias expertos y espero su ayuda

Respuesta
1

Ayudaría más si envías la macro completa. Jiji
Reemplaza en tu macro el siguiente código:
If Not Intersect(Target, Range("H2:H2000")) Is Nothing Then
Target.Offset(0, -1) = Target.Value - Target.Offset(0, -1).Value
End If
Por este código:
‘El acumulado lo estoy poniendo en la columna del lado derecho.
If Not Intersect(Target, Range("H2:H2000")) Is Nothing Then
Target.Offset(0, -1) = Target.Offset(0, -1).Value - Target.Value
Target.Offset(0, 1) = Target.Offset(0, 1).Value + Target.Value
End If
‘En este código estoy poniendo el acumulado en la misma celda, pero no sé como

‘funcione, porque no tengo todo el contexto de la macro.
If Not Intersect(Target, Range("H2:H2000")) Is Nothing Then
Valoractual = Target.Value
Target.Offset(0, -1) = Target.Offset(0, -1).Value - Target.Value
Target.Value = Target.Value + valoractual
End If
Prueba las 2 opciones, si te funciona alguna.

hola ejecute los códigos que me pusiste y el primer código por lo que me dic uenta fue que cuando ingreso en en H me le descuenta a G y los valores que se van ingresando en H se van acumulando en en I eso me sirve pero quisiaera saber si en vez de acumular los valores en I se pudiera acumularlos en la misma celda que se ingresaron osea H I ademas de eso como hago para pasar G se encuentra en la hoja1 y H se encuentra en la hoja 2 como hago gracias por tu ayuda este es el código que funciono

If Not Intersect(Target, Range("H2:H2000")) Is Nothing Then
Target.Offset(0, -1) = Target.Offset(0, -1).Value - Target.Value
Target.Offset(0, 1) = Target.Offset(0, 1).Value + Target.Value
End If

el segundo código que me pusite no funcionaba votaba unos números muy diferentes

No pude probar el segundo, porque no me enviaste la macro completa, me la puedes enviar.

hola amigo la macro solo es ese código solo necesito eso bueno en todo caso asi me sirve como lo tengo lo único que me queda en duda es como puedo hacer para que H me le descuente a la columna C que se encuentra en la hoja 1 y h se encuentra en la hoja 2 como hago referencia amigo

mira esta es la macro completa

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'controla col H actualizando col G
If Not Intersect(Target, Range("H2:H2000")) Is Nothing Then
Target.Offset(0, -1) = Target.Value - Target.Offset(0, -1).Value
'controla col D actualizando col G
ElseIf Not Intersect(Target, Range("D2:D2000")) Is Nothing Then
Target.Offset(0, 3) = Target.Value + Target.Offset(0, 3).Value
End If
End Sub 
 

col H al col G resta

col D a col G suma

esa es todo el código que tengo

Si ya quedó, por favor, puedes cerrar la pregunta y enviar una nueva con la nueva información que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas