Cambiar contenido celda haciendo doble click en otra

3 envíos / 0 nuevos
Último envío
Jose Luis Casla...
Imagen de Jose Luis Casla Araiz
Offline
última acción: Hace 1 año 1 mes
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntos
alta: 11/05/2012 - 15:15
Puntos: 1785
Cambiar contenido celda haciendo doble click en otra

Hola a todos:

Una vez más me hago presente en el foro trayendo un problema que no consigo solucionar.

Estoy enviando una hoja de ejemplo.

Se trata de una coleccion de libros para los profesores. Pueden acceder a ellos siempre que el libro esté disponible. Para ello, por ejemplo, Manuel,  selecciona el libro que quiere, por ejemplo matemática de segundo, y a continuación hace doble click en su nombre.

Al hacerlo, la celda correspondiente a Matemaáticas de segundo, cambia de color a la vez que en esa celda se pone el nombre de Manuel. De esta manera, cada profesor, ve los libros de texto de la biblioteca que están libres y quién tiene los libros que están ocupados.

En la Hoja de muestra, he puesto el ejemplo de dos profesores que ya están utilizando un par de libros, Miguel y Esperanza...

He conseguido haciendo doble click en una celda, la de Manuel por ejemplo, que me cambie el color de la celda B4... pero eso es "con trampa" porque en la macro le he dicho a "piñon fijo" que cambie la celda B4. Lo que no consigo es "capturar" la celda que me interese en cada caso... que no siempre es B4, claro esá...

Cuando me pongo en la celda C2 por ejemplo, en ese momento C2 es la celda activa, pero cuando me desplazo a la columna de profesorres para hacer doble click en la celda del profesor correspondiente... ya no tengo la celda activa de antes...

Tiene solución? o está mal planteado el problema?

Gracias como siempre por la atencion.

Saludos cordiales.

Jose Luis Casla

AdjuntoTamaño
File textos_biblioteca.xlsm9.53 KB
pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 40 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Excel no recuerda la celda

Excel no recuerda la celda anterior, sólo la celda actual.

así que tendrás que almacenar esa celda en una variable, o en una celda auxiliar de la hoja.

por ejemplo, puedes definir unas variables al principio del código de la hoja:

Private CeldaAnterior As Range

Private CeldaActual As Range

y luego en el evento SelectionChange, guardar los valores

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

' establecemos la celda anterior

    Set CeldaAnterior = CeldaActual 'la actual de antes la guardo como celda anterior

    Set CeldaActual = ActiveCell 'actualizo a la celda actual, para la próxima

End Sub

 

Tendrás que añadir control de errores para cuando sea la primera vez que se abre el libro y no haya una celda anterior, pero es sólo una idea de cómo se podría hacer.

 

 

------
Ya sé Excel, pero necesito más.

Jose Luis Casla...
Imagen de Jose Luis Casla Araiz
Offline
última acción: Hace 1 año 1 mes
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntos
alta: 11/05/2012 - 15:15
Puntos: 1785
Muchas gracias Paco, por el

Muchas gracias Paco, por el tiempo dedicado y tu aportacion a encontrar la respuesta que buscaba.

He trabajado sobre la Hoja original y he llegado a dar con una solucion "aceptable".

He modificado algunas cosillas de las macros de los dos eventos de la hoja y he suprimido el macro1... por innecesario.
He trabajado en los dos eventos de la Hoja:  BeforeDoubleClick y SelectionChange.

Ha quedado asi:

-----------------------------------------------------------

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim Celda As String
Dim nFila As Integer
Dim nCol As Integer

Dim Rango As String
Rango = ("F2:F12")

If Not Application.Intersect(Range(Rango), Target) Is Nothing Then
Cancel = True


' Almaceno la celda seleccionada en la celda AA1
Celda = Range("AA1").Value
Range(Celda) = ActiveCell.Value

End If

End Sub

-----------------------------------------------------------

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Rango As String
Dim Celda As Range

Rango = ("B2:D5")

If Not Application.Intersect(Range(Rango), Target) Is Nothing Then
Cancel = True
Set Celda = ActiveCell

Range("AA1") = Celda.Address

End If
End Sub
--------------------------------------------------------

De esta manera  el programa funciona sin problemas.
Muchas gracias de nuevo, y doy por zanjado el tema.

Los "detalles" pendientes los trabajare, espero que sin problemas.

Muchas gracias al Foro y a ti amigo Paco en especial.

Saludos cordiales.

Jose Luis Casla