Macro para cambiar de información con un click!

Amigos quisiera mostrar la información de "C2" en la figura "1Elipse" pero que al clickearlo cambie a la informacion de "C3", luego en blanco y viseversa. ¿Eso si es posible?.

1 Respuesta

Respuesta
1

Jose Delgado, cuando dices "luego en blanco y viceversa", a que te refieres.

Podrías usar una macro en el evento change de la hoja actual que al cambiar el dato en la celda C2 la información del elipse cambie automáticamente y otra macro en un modulo, para cuando des clic en el elipse este cambie al dato de la celda C3. Si es esto lo que quieres acá te dejo el código.

Primero tienes que crear la forma (elipse1) en la hoja1, luego abres el entorno de vba y en el evento de la hoja haz doble clic y pegas la macro.

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Shapes.Range(Array("Oval 1")).Select
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = ActiveSheet.Range("C2")
Range("C3").Select
End Sub

Luego insertas un modulo y dentro de él la siguiente macro

Sub datos_celda()
ActiveSheet.Shapes.Range(Array("Oval 1")).Select
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = ActiveSheet.Range("C3")
Range("C3").Select
End Sub

Ya en la hoja le das clic derecho a la forma (elipse1) y le das asignar macro y buscas donde dice (datos_celda) y eso es todo, solo seria de jugar un poco con los codigos jejejeje.

¡Gracias! Me sirvió exactamente, excepto por una cosa. Luego en C3 al clickear ira a una celda en blanco y luego a C2 otra vez, por eso decía "luego en blanco y viceversa" como un ciclo :)

Como lo hago, Ahrens Ruano?

Lo que quieres que quede en blanco son las celdas o la figura.

La figura, pero al decir "que quede en blanco" me refiero a "sin contenido"

Podrían haber otras maneras de hacer lo que dices y a mi se me ocurre hacerlo de la siguiente manera acortando un poco el código que va en el evento change de la hoja activa:

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Shapes.Range(Array("Oval 1")).TextFrame2.TextRange.Text = ActiveSheet.Range("C2")
Range("C3").Select
End Sub

Y en el modulo de la siguiente manera, poniendo una pausa en la ejecución de las macros. Para ver en la forma (elipse) el dato de la celda C3, para después borrar y posicionarse en la celda C2

Sub datos_celda()
ActiveSheet.Shapes.Range(Array("Oval 1")).TextFrame2.TextRange.Text = ActiveSheet.Range("C3")
Application.Wait (Now + TimeValue("00:00:02")) 'Pausa de dos segundos
Call datos_celda2
End Sub

Sub datos_celda2()
Application.Wait (Now + TimeValue("00:00:02")) 'Pausa de dos segundos

ActiveSheet.Shapes.Range(Array("Oval 1")).TextFrame2.TextRange.Text = ""
Range("C2").Select
End Sub

Asignando siempre la macro datos_celda a la forma(elipse1).

Espero te sirva y si tienes mas dudas me puedes escribir a mi correo [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas