Foros del Web » Soporte técnico » Ofimática »

porque no borra este código?

Estas en el tema de porque no borra este código? en el foro de Ofimática en Foros del Web. Tengo un código (no es mío yo simplemente lo he adapatado) con el cual cualquier modificación que haga en la celda a1 o a2 de ...
  #1 (permalink)  
Antiguo 05/04/2006, 02:36
Avatar de niconico  
Fecha de Ingreso: enero-2006
Mensajes: 166
Antigüedad: 18 años, 3 meses
Puntos: 0
porque no borra este código?

Tengo un código (no es mío yo simplemente lo he adapatado) con el cual cualquier modificación que haga en la celda a1 o a2 de la hoja 1 se vuelca automáticamente a la celda a1 o a2 de la hoja 2, y viceversa. El problema que tengo es cuando borro las dos celdas a la vez, si borro una sola me la borra también en la otra hoja pero si borro las dos a la vez sólo me borra una, y esa siempre es a1, es como si cuando seleccionas las dos celdas y las borras no leyera el segundo if.
hoja1:
Código:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 And Target.Column = 1 Then
    Hoja2.Range("A1") = Range("A1")
End If
If Target.Row = 2 And Target.Column = 1 Then
    Hoja2.Range("A2") = Range("A2")
End If
End Sub
hoja2
Código:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 And Target.Column = 1 Then
    Hoja1.Range("A1") = Range("A1")
End If
If Target.Row = 2 And Target.Column = 1 Then
    Hoja1.Range("A2") = Range("A2")
End If
End Sub
muchas gracias
  #2 (permalink)  
Antiguo 05/04/2006, 03:17
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
No es que no lea el segundo if, sino que el código que tienes se basa en la primera celda seleccionada que cumpla esas condiciones, en este caso A1. Bueno, yo he llegado a esa conclusión con los programas que he hecho y con pruebas con el tuyo. Es decir. tú cambias la celda A1 y el target se queda con 1 1. Aunque selecciones varias a la vez el encuentra la primera que cumple (A1) y ejecuta el código, que como es que cuando una celda cambie, sólo se ejecutará una vez y por ello, nunca cambiará la segunda. Tendrás que hacerte otra macro si quieres conseguir borrar todas a la vez.
Voy ha echar un vistazo por ahí haber si se me ocurre algo para mejorarlo.
Un saludo.
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #3 (permalink)  
Antiguo 05/04/2006, 07:50
Avatar de niconico  
Fecha de Ingreso: enero-2006
Mensajes: 166
Antigüedad: 18 años, 3 meses
Puntos: 0
muchas gracias espero que me puedas ayudar
  #4 (permalink)  
Antiguo 07/04/2006, 01:36
Avatar de niconico  
Fecha de Ingreso: enero-2006
Mensajes: 166
Antigüedad: 18 años, 3 meses
Puntos: 0
La solución me la ha dado KL,
hoja1
Código:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    On Error Resume Next
    Set rng = Intersect(Target, [A1:A10])
    On Error GoTo 0
    If rng Is Nothing Then Exit Sub
    Application.EnableEvents = False
    Hoja2.Range(rng.Address).Value = rng.Value
    Application.EnableEvents = True
End Sub
hoja2
Código:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    On Error Resume Next
    Set rng = Intersect(Target, [A1:A10])
    On Error GoTo 0
    If rng Is Nothing Then Exit Sub
    Application.EnableEvents = False
    Hoja1.Range(rng.Address).Value = rng.Value
    Application.EnableEvents = True
End Sub
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:00.