Me da error esta macro en la hoja

Bueas tardes Dante
Tengo esta macro en la hoja de facturacion:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G42")) Is Nothing Then
Sheets("Estadistica Venta").Unprotect Password:="1"
Sheets("Estadistica Venta").Range("I94") = Sheets("Estadistica Venta").Range("I94") + Range("G42*5%")
End If
End Sub

1º Paso Hago la Factura
2º Paso En la celda "G42", es el total de la Factura
3º Paso Trato de sacar la comision del viajante que es el 5%, Range("G42*5%").
4º Paso Que me lo sume en la hoja ("Estadistica Venta").
5º Paso En la celda Range("I94"), sumando a la cantidad existente en esta celda.

Y no me sale

1 respuesta

Respuesta
2

H o l a:

Si en la celda G42 tienes una fórmula, entonces el evento change no se activa para cuando cambia el resultado en la celda G42, ya que no estás modificando la celda, lo que está cambiando es el resultado de la fórmula.

Lo que tienes que poner en esta línea:

If Not Intersect(Target, Range("???")) Is Nothing Then

Sonn las celdas que manualmente capturas y que afectan el resultado de la fórmula.

Por ejemplo si la fórmula que tienes en G42 es esta:

=suma("G5:G40")

Y si tú manualmente introduces valores en las celdas G5 a G40, entonces la línea sería:

If Not Intersect(Target, Range("G5:G40")) Is Nothing Then

Adicional a lo anterior, esta línea está mal:

Sheets("Estadistica Venta").Range("I94") + Range("G42*5%")

Debe ser así:

Sheets("Estadistica Venta").Range("I94") = Sheets("Estadistica Venta").Range("I94") + (Range("G42") * 0.05)


Pero si no sabes cuáles son las celdas que afectan la celda G42, o es muy complicado determinarlas, entonces utiliza el evento Calculate, quita tu macro y pon la siguiente:

Private Sub Worksheet_Calculate()
    Sheets("Estadistica Venta").Unprotect Password:="1"
    Sheets("Estadistica Venta").Range("I94") = Sheets("Estadistica Venta").Range("I94") + (Range("G42") * 0.05)
End Sub

Si tienes problemas, mejor envíame tu archivo para adecuar la macro. Recuerda poner tu nombre de usuario en el correo.

':)
':)

Hola Dante

Teniendo en cuenta que en "G42", tengo la fórmula :

=SUMA(G12:G41)

Pregunto

Si en vez de ponerlo en la hoja, hago una macro par ejecutarla cuando hago la Factura :

Sub FlexMG()
' Acumular comision a Ortigosa
Sheets("Estadistica Venta").Unprotect Password:="1"
Sheets("Estadistica Venta").Range("I94") = Sheets("Estadistica Venta").Range("I94") + (Range("G12:G41") * 0.05)
End Sub

Pero me da error

Un saludo Dante

Cambia esta línea

Sheets("Estadistica Venta").Range("I94") = Sheets("Estadistica Venta").Range("I94") + (Range("G12:G41") * 0.05)

Por esta:

Sheets("Estadistica Venta").Range("I94") = Sheets("Estadistica Venta").Range("I94") + (Range("G42") * 0.05)

':)
':)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas