¿Se podría ejecutar la macro cuando sepa que los datos son correctos?
Hace un tiempo me ayudaste con esta macro
Yo meto datos en una hoja y me hace un calculo mensual y anual en otra hoja. La macro funciona bien y hace su función a la perfección, a medida que voy introduciendo datos me los va añadiendo y sumando, pero vengo notando algo.
Si en la primera celda donde introduzco un valor pongo por ejemplo "20", y luego lo borro y coloco "21" la suma en la siguiente hoja me la borra entera, tanto el valor mensual como el anual.
¿Se podría ejecutar esta macro solo cuando yo le diga?
Muchas gracias, Un saludo
Private Sub Worksheet_Change(ByVal Target As Range)
'actualiza los acumuladores en la siguiente hoja
'
If Not Intersect(Target, Range("K:X")) Is Nothing Then
If Target.Row < 9 Then Exit Sub
If Target.Count > 10 Then Exit Sub
'
Set H1 = ActiveSheet
fila = Target.Cells(1, 1).Row
col = Target.Cells(1, 1).Column
valor = Val(Cells(fila, col).Value)
Set fec1 = H1.Range("K6")
Set h2 = Sheets("NOVIEMBRE")
Set fec2 = h2.Cells(fila, "CS") 'fecha de captura
'
If fec2.Value = "" Or Not IsDate(fec2.Value) Then
fec2.Value = fec1.Value
End If
'
año1 = Year(fec1.Value)
año2 = Year(fec2.Value)
mes1 = Month(fec1.Value)
mes2 = Month(fec2.Value)
dia1 = Day(fec1.Value)
dia2 = Day(fec2.Value)
If año1 <> año2 Then
h2.Cells(fila, "J").Value = valor 'dia
h2.Cells(fila, "O").Value = valor 'mes
h2.Cells(fila, "U").Value = valor 'año
Else
If mes1 <> mes2 Then
h2.Cells(fila, "J").Value = valor 'dia
h2.Cells(fila, "O").Value = valor 'mes
h2.Cells(fila, "U").Value = h2.Cells(fila, "U").Value + valor 'año
Else
If dia1 <> dia2 Then
h2.Cells(fila, "J").Value = valor 'dia
h2.Cells(fila, "O").Value = h2.Cells(fila, "O").Value + valor 'mes
h2.Cells(fila, "U").Value = h2.Cells(fila, "U").Value + valor 'año
Else
h2.Cells(fila, "J").Value = H1.Cells(fila, "AH") 'dia
h2.Cells(fila, "O").Value = h2.Cells(fila, "O").Value - h2.Cells(fila, "CR") + H1.Cells(fila, "AH") 'mes
h2.Cells(fila, "U").Value = h2.Cells(fila, "U").Value - h2.Cells(fila, "CR") + H1.Cells(fila, "AH") 'año
End If
End If
End If
fec2.Value = H1.Range("K6")
h2.Cells(fila, "CR") = H1.Cells(fila, "AH")
End If
End Sub