Conectar valor de dos celdas

Buenos días.
Imagino que será algo sencillo, pero por más que busco no encuentro la forma de hacerlo.
Me gustaría que dos celdas compartiesen el mismo valor, independientemente desde cual de ellas se introdujese el mismo. Es decir, supongamos que quiero conectar A1 y H1. Lo que me gustaría es que si escribo 2 en H1, en A1 aparezca 2 también.
Pero que lo mismo ocurra si meto el valor desde A1, si meto 3 en A1, aparezca 3 en H1.
Pretendo que las dos celdas sean clones, ambas input.
A ver si alguien sabe como hacerlo, gracias de antemano. Saludos

1 respuesta

Respuesta
1
No te vale el empleo de fórmulas, ya que te aparecería una referencia circular. La solución es programar un control de evento.
Simplemente tienes que copiar este código VBA en la hoja donde quieras hacer esa equivalencia de celdas.
Si tienes alguna duda, dímelo.
Saludos
Angel
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Private Sub Worksheet_Change(ByVal CeldaEditada As Range)
Dim RangoCeldaEditada As String
    RangoCeldaEditada = Replace(CeldaEditada.Address, "$", "")
    If RangoCeldaEditada = "H1" Then
        Range("A1").Value = Range("H1").Value
    End If
    If RangoCeldaEditada = "A1" Then
        Range("H1").Value = Range("A1").Value
    End If
End Sub
Gracias por la aclaración. Pensaba que existía alguna opción más directa para hacer esto.
Lo probé y funciona estupendamente.
¿Cómo podría hacer para que funcionase entre celdas de hojas distintas, por ejemplo A1 de la Hoja1 y H1 de la Hoja2?
Intente solucionarlo copiando el código en ambas hojas, y sustituyendo en ellos "A1" por "Hoja1!A1" y "H1" por "Hoja2!H1", pero no funciona. No entiendo mucho de programación en Visual B.
Gracias de nuevo.
En la Hoja1 tienes que poner:

Private Sub Worksheet_Change(ByVal CeldaEditada As Range)
Dim RangoCeldaEditada As String
    RangoCeldaEditada = Replace(CeldaEditada.Address, "$", "")
    If RangoCeldaEditada = "H1" Then
        HojaActual = ActiveSheet.Name
        Sheets("Hoja2").Range("A1").Value = CeldaEditada.Value
    End If
End Sub

Y en la Hoja 2:
Private Sub Worksheet_Change(ByVal CeldaEditada As Range)
Dim RangoCeldaEditada As String
    RangoCeldaEditada = Replace(CeldaEditada.Address, "$", "")
    If RangoCeldaEditada = "H1" Then
        HojaActual = ActiveSheet.Name
        Sheets("Hoja1").Range("A1").Value = CeldaEditada.Value
    End If
End Sub
Muchas gracias Angel.
Funciona perfectamente. Me ha servido también variandolo un poco para empezar a comprender y trastear en visual Basic, que no tengo ni idea.
Saludos, y gracias de nuevo
Javi

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas