Cambiar indistintamente el valor que comparten dos celdas ( II)

Lamentablemente la solución que me dió Elsa no me vale del todo:


Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
Range("B" & Target.Row) = Target.Value
ElseIf Not Intersect(Target, Range("B1:B10")) Is Nothing Then
Range("A" & Target.Row) = Target.Value
ElseIf Not Intersect(Target, Range("A11:A20")) Is Nothing Then
Range("C" & Target.Row) = Target.Value
ElseIf Not Intersect(Target, Range("C11:C20")) Is Nothing Then
Range("A" & Target.Row) = Target.Value
End If
End Sub

El primer rango de valores funciona perfectamente ( las A2:A10 con las B2:B10),
Sin embargo con el segundo rango de valores no funciona ( las A11:A20 con las C1:C10)
Parece ser que sólo funciona con las celdas que están en la misma altura de fila, es decir ( las A11:A20 con las C11:C20) y yo necesito que sea ( las A11:A20 con las C1:C10)
¿Podéis ayudarme? GRACIAS ELSA

Sé que puedo cambiar
Indistintamente el valor de la celda A1 o el de la B1, que automáticamente se
cambiará en la que no toco ( es decir, que si en A1 pongo 5, automáticamente en
B1 sale un 5, y si por el contrario en B1 pongo un 3 es entonces en A1 dónde
aparece un 3)

Esto se puede conseguir
Mediante el siguiente código :

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1"
Then Range("b1") = Range("a1").Value If Target.Address =
"$B$1" Then Range("a1") = Range("b1").Value End
Sub

Quisiera ampliar esta
Característica a un rango de valores determinado, por ejemplo que las celdas A2
a A10 fueran iguales a las celdas B2 a B10, y por ejemplo las celdas A11 a A20
fueran iguales a las C1 a C10 ( SIN TENER QUE IR
METIENDOLAS UNA A UNA)
¿Podéis decirme como?

1 Respuesta

Respuesta
1

Tenés razón (xxxxxx), asumí el rango en la misma fila. Ya te la ajusto en un rato... no finalices aún.

Por favor Elsa, lo necesito urgentemente, y quizás también, podrías incluir una segunda opción con otro código para relacionar esos rangos de celdas estando en hojas distintas ( es decir, en el ejemplo serian:

<p style="display: inline !important;">Las celdas A2:A10 (hoja 1) con las B2:B10 (hoja 2) y las A11:A20 (hoja 1) con las C1:C10 (hoja 2).
<p style="display: inline !important;">
<p style="display: inline !important;">Gracias, otra vez....un saludo

Por favor Elsa, lo necesito urgentemente, y quizás también, podrías incluir una segunda opción con otro código para relacionar esos rangos de celdas estando en hojas diferentes, es decir, en el ejemplo serian:

Las celdas A2:A10 (hoja 1) con las B2:B10 (hoja 2) y las A11:A20 (hoja 1) con las C1:C10 (hoja 2)

Gracias, otra vez...un saludo

Por cierto, no se por que aparezco como Xxxx

En el foro se hace lo que se puede y en el tiempo que se puede... y considerando las diferencias horarias entre expertos y usuarios... espero te haya llegado a tiempo.

Con lo que solicitas ahora, hay que contemplar el 'cambio' en las 2 hojas por eso van 2 rutinas, una en cada hoja.

La instrucción Application. EnableEvents en False es para que al modificar la col B o C no se ejecute el evento Change de la hoja 2 ... y así también en la otra.

Private Sub Worksheet_Change(ByVal Target As Range)   'SE COLOCA EN HOJA1
'x Elsamatilde
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
 Application.EnableEvents = False
 Sheets("Hoja2").Range("B" & Target.Row) = Target.Value
 Application.EnableEvents = True
ElseIf Not Intersect(Target, Range("A11:A20")) Is Nothing Then
 Application.EnableEvents = False
 Sheets("Hoja2").Range("C" & Target.Row - 10) = Target.Value
 Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)  'SE COLOCA EN HOJA 2
'x Elsamatilde
If Not Intersect(Target, Range("B1:B10")) Is Nothing Then
 Application.EnableEvents = False
 Sheets("Hoja1").Range("A" & Target.Row) = Target.Value
 Application.EnableEvents = True
ElseIf Not Intersect(Target, Range("C1:C10")) Is Nothing Then
 Application.EnableEvents = False
 Sheets("Hoja1").Range("A" & Target.Row + 10) = Target.Value
 Application.EnableEvents = True
End If
End Sub

PD) parece que colocaste la consulta como 'anónimo' ??

Hola Elsa,

Sigo impresionado con la rapidez en la respuesta. MIL GRACIAS.

Te dejaste por el camino la opción de tener todos los rangos de valores (A2:A10 con B2:B10 y A11:A20 con C1:C10) en la misma hoja.

Si tienes tiempo te agradecería esta última petición, y sino, no pasa nada...ya te he robado demasiado tiempo.

Reitero mis agradecimientos Elsa ( sobre todo por la rapidez y el interés prestado )

U nsaludo

Creo que te es fácil ajustar la macro original viendo las nuevas. Solo tenés que restar 10 filas a al fila del target para pasar de A a C, o sumar 10 para pasar de C a A:

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
 Range("B" & Target.Row) = Target.Value
ElseIf Not Intersect(Target, Range("B1:B10")) Is Nothing Then
 Range("A" & Target.Row) = Target.Value
ElseIf Not Intersect(Target, Range("A11:A20")) Is Nothing Then
 Range("C" & Target.Row - 10) = Target.Value
ElseIf Not Intersect(Target, Range("C1:C10")) Is Nothing Then
 Range("A" & Target.Row + 10) = Target.Value
End If
End Sub

Te aclaro que no podes usar las 2... esta vá sola o sino van las otras.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas