Inicio > Microsoft Excel > avalenciape > Ejecutar al hacer click en celda no en fila o columna!

Ejecutar al hacer click en celda no en fila o columna!

Experto:
Usuario:
Fecha: 22/09/2008
Valoración: Categoría: Microsoft Excel
21/09/2008
eoarria, usuario preguntando en Microsoft Excel
Usuario
Saludos!
Acabo de hacer una macro que ejecuta acciones si se hace click en un rango definido:
If Not Intersect(Target, Range("A9:A92")) Is Nothing Then
(Esto lo aprendi buscando por ahi, soy nuevo, programando desde ayer)
La macro ejecuta una accion que depende de cada celda: Abre un archivo de imagen cuyo nombre se encuentra en una columna adyacente, en la misma fila de la celda seleccionada, es como un catalogo. He leido por ahi que Excel no es lo mas eficaz para esta tarea, pero me funcionó a la perfección. Sin embargo, note un pequeño inconveniente: Cuando se selecciona la fila o la columna donde se encuentra la celda tambien se muestra la imagen. Esto no seria tan "terrible" en el caso de la fila, a no ser que tenga otras macros en celdas dentro de la misma fila, pero en el caso de la columna, muestra una imagen en la columna designada para tal fin, pero en la primera fila. Claro, yo agregue codigo para que cuando se seleccione otra celda, borre las imagen anterior (solo una debe ser visible a la vez), pero despues que se selecciona la columna, que ocurre el error, pone la imagen inexistente, esta no se borra, a diferencia de las que si estan en el rango.
Por esto, es que me pregunto: ¿Es posible ejecutar una macro cuando se seleccione SOLO y SOLO una CELDA, y no mediante seleccion de fila o columna? Gracias!
22/09/2008
eoarria, usuario preguntando en Microsoft Excel
Usuario
Ya resolví, gracias de todas maneras! Lo que hice fue agregarle algo:
If Not Intersect(Target, Range("A9:A92")) Is Nothing And Selection.Count = 1 Then...
De esa manera, se ejecuta la MACRO solo si hay SOLO una celda seleccionada.
22/09/2008
eoarria, experto respondiendo en Microsoft Excel
Experto
Si, claro que es posible, pero en realidad no das detalles especifico de tu macro, pero supondre que se trata de un evento de hoja, que debe ser el Change o el SelectionChange. Usarndo el segundo:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$C$4" Then
MsgBox "Celda C4"
End If
End Sub
Abraham
22/09/2008
eoarria, usuario preguntando en Microsoft Excel
Usuario
Gracias Abraham! Tu informacion igual me fue muy util, ya que estoy aprendiendo trozos de programas todos los dias, y es primera vez que veo el "Target.Address", que me sera muy util al momento de ejecutar SOLO para una celda especifica.
A modo de aclaratoria: Necesitaba seleccionarla con Intersect pues es un rango completo de celdas (A9:A92), y cada una tiene en la misma fila en la columna adyacente el nombre de una imagen que se debe abrir al seleccionar la celda. Imaginate, si elegias la fila, no habia problema, pues se ejecutaba solo la macro de la celda (solo una celda por cada fila tenia la macro). Pero cuando seleccionabas la columna A, de A9 a A92 ejecutaban la macro, asi que imaginate el desastre.
Muchas gracias, y 5/5 para ti amigo!
Eduardo.
22/09/2008
eoarria, usuario preguntando en Microsoft Excel
Usuario
Gracias Abraham! :)
Enlaces patrocinados