Jump to content
Sign in to follow this  
Gerardo Arevalo

Resaltar shape al pasar mouse

Recommended Posts

Gerardo:

Si yo pusiera alguna otra imagen tendria que grabar la macro para que me diera la posicion de cada shape???

Porqué no abres un tema nuevo y expones exactamente lo que quieres hacer.

Share this post


Link to post
Share on other sites

Dale, doy TEMA FINALIZADO!!!

Mis felicitaciones van para el maestro Macro Antonio por su paciencia y perserverancia. Tambien a Bigpetroman por su granote de arena en este tema.

Quedo mas que satisfecho con tan grandes resultados.

Share this post


Link to post
Share on other sites

Hola a todos, Muy bueno sinceramente.

pero aun me quedo con la incognita de tu 1er archivo "WorksheetMouseEvents.zip"

me deba mucha curiosidad de ver esos efectos en las formas insertadas en hoja.

Saludos..! :)

Share this post


Link to post
Share on other sites
Hola a todos, Muy bueno sinceramente.

pero aun me quedo con la incognita de tu 1er archivo "WorksheetMouseEvents.zip"

me deba mucha curiosidad de ver esos efectos en las formas insertadas en hoja.

Saludos..! :)

Sabes che, yo estoy igual con la misma incognita, la verdad no logro entender como es que no dio con los shapes, pero si resulta con los botones, es algo rarooo.. jejeje :P

Si alguien sabe como realizarlo pase el tip :D

Igual nuestro amigo Bigpetroman nos puede dar otro granito de arena :P

Share this post


Link to post
Share on other sites

Aparentemente con los shape directamente no se puede o tarda mucho, es lo que se entiende de este código que está al final del modulo de la hoja

Private Sub MEvents_ShapeMouseMove(Target As Shape)
' Use sparingly as VBA is just too slow to handle much
End Sub[/CODE]

así que nos quedaremos con las ganas de verlo en esos objetos jejeje, suerte

Share this post


Link to post
Share on other sites

el archivo de shapemousemove los shapes insertados ya stan con el color cambiado, la pregunta seria si veremos la forma de que los shapes permanescan en su stado original y solo cambien al pasar el mouse y no cuando se abra el libro

Saludos..!

Share this post


Link to post
Share on other sites

amigos, allí les dejo una posibilidad, lo que hice fue colocar una objeto image activex sobre las formas y allí si funciona el evento mousemove.

algunas observaciones:

1.- No pude agrupar la autoforma con el objeto image, por lo cual si se quiere mover deben hacerse por separado

2.- hay que quitar el relleno de la autoforma para que puede colorease con la macro

esto es solo un ejemplo, lo realice con los tres shapes mas a la dereche de la pantalla.

suerte

Nota: recuerden que la macro se activa con Control+A y se desactiva con Control+D

Shape events.rar

Share this post


Link to post
Share on other sites

He adaptado la macro de @[uSER=133908]bigpetroman[/uSER] para que sea válida con cualquier nº de shapes, eso si, siempre y cuando los nombres de imagen y shape sean iguales excepto en un carácter añadido al principio del nombre de la imagen.

Por ejemplo:

estrella01 para el shape y xestrella01 para la imagen (ControlActiveX)

Private Sub MEvents_ShapeMouseEnter(Target As Shape)
On Error Resume Next

If Target.Name = "MARCO" Then Exit Sub

'Posicionamos, dimensionamos y visualizamos el MARCO
With ActiveSheet.Shapes("MARCO")
.Visible = True
.Top = Target.Top - 4
.Left = Target.Left - 4
.Height = Target.Height + 8
.Width = Target.Width + 8
End With

'Quitamos los colores
For Each Control In ActiveSheet.OLEObjects
If TypeOf Control.Object Is MsForms.Image Then
ActiveSheet.Shapes(Target.Name).Fill.BackColor.RGB = RGB(79, 129, 189)
End If
Next

'Resaltamos el seleccionado
ActiveSheet.Shapes(Mid(Target.Name, 2)).Fill.BackColor.RGB = RGB(204, 0, 0)

End Sub
[/CODE]

Share this post


Link to post
Share on other sites

@[uSER=133908]bigpetroman[/uSER] sos un genio, ya funciona!! esta mas que excelente.

Ahora si, doy el tema finalizado.

Saludos y gracias a todos por sus grandes aportaciones en especial al Maestro @[uSER=46507]Macro Antonio[/uSER] por su invaluable apoyo y conocimiento. Es incleible como se fue mejorando la macro de algo tan sencillo a algo sensacional...

Mil gracias a todos!! :D Les debo un viaje a la Argentina :)

Share this post


Link to post
Share on other sites

Todo el mérito para el "granhombredepiedra",;);) que ha sido el que ha dado con la solución.

Sigo sin entender porqué no os funciona el evento ShapeEnter, precisamente en los Shapes.

Share this post


Link to post
Share on other sites

Gracias maestro @[uSER=46507]Macro Antonio[/uSER], dejo la macro corregida, un pequeño lapsus mental allí creo :)

Private Sub MEvents_ShapeMouseEnter(Target As Shape)
On Error Resume Next

If Target.Name = "MARCO" Then Exit Sub

'Posicionamos, dimensionamos y visualizamos el MARCO
With ActiveSheet.Shapes("MARCO")
.Visible = True
.Top = Target.Top - 4
.Left = Target.Left - 4
.Height = Target.Height + 8
.Width = Target.Width + 8
End With

'Quitamos los colores
For Each Control In ActiveSheet.OLEObjects
If TypeOf Control.Object Is MsForms.Image Then
ActiveSheet.Shapes(Mid(Control.Name, 2)).Fill.BackColor.RGB = RGB(79, 129, 189)
End If
Next

'Resaltamos el seleccionado
ActiveSheet.Shapes(Mid(Target.Name, 2)).Fill.BackColor.RGB = RGB(204, 0, 0)

End Sub[/CODE]

el cambio es en esta línea:

[CODE]ActiveSheet.Shapes(Mid(Control.Name, 2)).Fill.BackColor.RGB = RGB(79, 129, 189)[/CODE]

antes decia Target.Name

Share this post


Link to post
Share on other sites

Amigos tal vez esto sea de otro tema, pero me surgio una duda.. La macro funciona de lujo, pero me pidieron adornar mas el archivo, dale que me pidieron generar un evento con el mouseover, ya me resulta.. pero al momento de querer implentar este codigo con el que ustedes me hicieron favor de apoyarme no me da, pues al momento de pasar por por la flechita me muestra la imagen correspondiente pero si yo monto la Imagen (control Activex) y activo la macro no se muestra esto, tengo que declarar dentro de mi codigo la imagen del control activex para que me aparezca dentro de la serie1, pero ya no funciona esta macro, me pueden dar alguna idea de como hacerlo.

Gracias...

post-122545-145877010672_thumb.png

Shape events.rar

Share this post


Link to post
Share on other sites

Bigpetroma che disculpame que te moleste pero ya pase la macro para las demas series y mirá que curioso, los image aunque les pongo el nombre que les corresponde como que cambia el nombre de la serie2, es decir... si cambio los de las serie2, los de la serie1 se ponen igual a los de la serie2, me podes ayudar, por favor.

Shape events sm.xls

Share this post


Link to post
Share on other sites
@[uSER=122545]Gerardo Arevalo[/uSER], revisa el anexo, habias colocado los image pero los nombres NO estaban iguales a los shape.

realice un pequeño cambio para ocultar los image de las series NO seleccionadas y ahora se cambia en color de relleno.

suerte.

Una ultima preguntita, che se podra dejar el color orginal del shape, y solo al momento de seleccionarlo que lo cambie de color rojo y al seleccionar otro lo regrese a su color original? :mad::oops::mad::oops: Perdoname que te pregunte tanto, pero no se mucho de macros, si es mucho pedir y vos no me queres apoyar lo entiendo perfecto, hasta ahora su ayuda a sido invaluable :D

Share this post


Link to post
Share on other sites

amigo, en la macro, esta parte

'Quitamos los colores
For Each Control In ActiveSheet.OLEObjects
If TypeOf Control.Object Is MsForms.Image Then
ActiveSheet.Shapes(Mid(Control.Name, 2)).Fill.ForeColor.RGB = RGB(79, 129, 189)
End If
Next[/CODE]

es la que coloca el mismo color a todos los elementos, busca el codigo RGB del color que quieres y listo, espero que sea eso lo que necesitas

Share this post


Link to post
Share on other sites
amigo, en la macro, esta parte

'Quitamos los colores
For Each Control In ActiveSheet.OLEObjects
If TypeOf Control.Object Is MsForms.Image Then
ActiveSheet.Shapes(Mid(Control.Name, 2)).Fill.ForeColor.RGB = RGB(79, 129, 189)
End If
Next[/CODE]

es la que coloca el mismo color a todos los elementos, busca el codigo RGB del color que quieres y listo, espero que sea eso lo que necesitas

Che tal vez no me di a entender, mirá tengo varios shape (supongamos que para este ejemplo tengo 150) todos de diferente color, mi duda seria en que si se puede respetar el color original de cada shape, y al momento de correr la macro para resaltar el shape seleccionado cambie de color, enseguida si paso a otro shape el shape anterior regresara a su color original.

Gracias, por tu tiempo y paciencia.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...

Important Information

Privacy Policy