Sacar la casilla excel, que activa la macro

Hola Valedor, tengo una hoja excel y en una fila de varias columnas, he insertado un mismo dibujo que me activa una macro. Necesito saber en la macro, desde que casilla he activado la macro. Es decir, en que casilla esta el dibujo que he pulsado.
Lo más que he conseguido es sacar la casilla activa con ActiveCell pero no me vale, pues no tiene por que ser la casilla activa, desde donde yo pulse al dibujo.
Te doy las Gracias.

1 respuesta

Respuesta
1
Supongo que con casilla te refieres a "celda" y supongo que lo que quieres saber es, dependiendo el dibujo pulsado, en que celda se encuentra este dibujo, supongo que si lo quieres así es por que los dibujos pueden estar en diferentes celdas y estos e mueven, si no se mueven y siempre están "sobre" la misma celda, hay tras formas de saber esto, pero para no trabajar doble, necesitaría me aclaras estos puntos lo más detallado posible...
Efectivamente, por casilla me refiero a celda. Perdona mi poca exactitud, espero ser más concreto ahora.
Supongamos que en una hoja Excel las celdas K3 K4 K5 K6 K7 etc. tengo siempre el mismo dibujo en todas, y que este siempre me activa la misma macro -macro1-. Los dibujos no se cambian de celda, están siempre en ellas.
En cierto momento, la celda que tengo activa es la H4, pues es en la ultima en la que introduje datos.
A continuación pulso con el ratón sobre el dibujo que esta en K4
Pues bien lo que quisiera es que dicha macro reconociera la referencia de la celda del dibujo que pulsé, es decir K4.
Yo he conseguido sacar el valor $K$4 de la celda activa con: ActiveCell.Cells.Address - Pero no es lo que quiero.
Gracias otra vez.
El objetivo de la macro, es bloquear las
Celdas de la columna que acabo de escribir, (supongamos B4 C4 E4 G4 y H4) SOLO ESAS, por lo que necesito saber en que columna debo bloquear. Para ello pulso el dibujo, se activa la macro y sacando ese valor que pido, bloqueo las celdas que me interesan.
A lo mejor tienes otra fórmula para hacer esto.
Otra pregunta, puedo activar la macro con alguna fórmula de excel, como por ejemplo si pone OK en la celda, ¿activar la macro? -
De ser posible, ¿le podría pasar valores?
Gracias.
Prueba lo siguiente, copia este código a un modulo
Option Explicit
Public Sub Imagen1()
MiMacro "K3"
End Sub
Public Sub Imagen2()
MiMacro "K4"
End Sub
Public Sub Imagen3()
MiMacro "K5"
End Sub
Public Sub Imagen4()
MiMacro "K6"
End Sub
Public Sub Imagen5()
MiMacro "K7"
End Sub
Private Sub MiMacro(ByVal Celda As String)
MsgBox "Se pulso sobre la celda " & Celda
End Sub
A cada una de tus imágenes, asígnales cada una de las macros Imagen1, Imagen2, etc, como sabes, esto se hace dando un clic con el botón secundario (normalmente el derecho) de tu ratón y seleccionando Asignar macro...
Creo que esto resuelve tu problema, a la macro le puede pasar valores, en este caso cualquier valor de texto, yo le estoy pasando la dirección de la celda donde se presiono.
Gracias Valedor, por contestarme tan pronto, pero la solución que me das, en mi caso no es nada práctica, pues se trata de una tabla con más de 400 filas, por lo que debería tener más de 400 imágenes todas iguales, pero cada una apuntando a una dirección distinta, y en la macro otros tantos apartados individuales.
Las 5 posibilidades que te indicaba, eran a modo de ejemplo, pero en realidad son muchísimos más.
Yo buscaba poder sacar el valor de la celda sobre la que se pulsó, directamente.
Para una vez tenido el dato, hacer los procesos necesarios para el bloqueo de campos que te comenté, pero que no tuviera que hacer una distinción celda por celda.
Si se te ocurre algo, te agradecería me lo indicaras.
Tienes razón no es nada practico y no te recomiendo entonces usar las imágenes, mejor usar el evento Change de la hoja donde estés trabajando, con este evento puede saber que celda fue la que modifico el usuario y que valor introdujo en dicha celda, creo que este es el evento ideal para lo que quieres, si me das más detalles de tu operación te fijo como implementarlo.
Hola de nuevo Valedor.
Lo primero decirte que conozco muy poco, por no decir nada el Visual Basic, por lo cual lo que me dices del Evento Change - no sé de que se trata, En lo que me contestas trataré de documentarme.
El caso mío es el siguiente:
Se trata de una tabla en la que se van introduciendo valores en algunas celdas, de manera que mediante unas determinadas fórmulas, se calculan unos valores en otras celdas.
Las celdas en las que se introducen datos, están desbloqueadas, y el resto bloqueado.
Hasta aquí como verás es normal.
De lo que se trata es de bloquear las celdas en las que ya he introducido todos los datos de una misma columna.
Pero no por el hecho de completar la línea, debo bloquearla, sino cuando se comprueba que los datos son correctos.
Para ello pensé que lo mejor era una macro que lo hiciera, pero me encontré con el problema primero, de no saber activar la macro con una regla de excel, del tipo de si pone OK en la celda, arrancar la macro.
Por lo que decidí cargar una imagen en su lugar para activarla, y aquí con el segundo problema de no poder detectar el valor de la columna desde la que activo la macro.
Espero que haya podido transmitirte el caso.
Aprovecho para felicitarte a ti y a la página en cuestión por la oportunidad que nos dais a los que deseamos sacar partido de las herramientas que tenemos, y tropezamos una y otra vez con problemas que nos quitan tantas horas de sueño.
Yo te escribo desde Madrid, me gustaría saber desde donde me contestas, sobre todo por el horario tuyo.
Gracias.
Te escribo desde México, ahora todavía es temprano...
Me hubiese ayudado mucho que me dijeras sobre que filas o columnas trabajas, que condiciones usas para evaluar si están o no correctos tus datos y que cálculos realizas...
Hice un ejemplo que creo es lo que requieres, reitero, solo creo, pero que como comentas que no usas VBA te recomiendo mejor me pidas el archivo que hice a mi correo y tu tarea si es lo que necesitas es estudiarlo un poquito y adaptarlo a tus necesidades, claro, te puedo ayudar un poquito, saludos...
Mauricio
[email protected]
Gracias Mauricio, acabo de enviarte un correo a la dirección que me indicas, para que me reenvíes el fichero.
Acabo de enviarte el archivo.
Hola Mauricio, perdona que no te contestara antes, pero hasta hoy no pude estudiar tu fichero.
Me ha ayudado a comprender cosas, pero no es lo que quería.
Lo único que me interesa es poder detectar desde la macro, la celda, o mejor aun, la fila correspondiente a la imagen que pulsé para activar la macro.
Sin necesidad de que en ese momento sea la celda activa, pues ese dato si soy capaz de sacarlo, pero no lo quiero así.
De esta manera no tendría que tener en cada imagen una macro diferente (Recuerda que son más de 300)
Si me puedes ayudar (más todavía) te lo agradeceré, si no dímelo y de todas formas muchas gracias por tu gran interés y finalizaría la pregunta.
Aquí estamos de Semana Santa, allí supongo que también se celebra.
Un saludo y gracias.
Con el código que te envíe, puedes tener 300 o 65000 filas y "siempre" sabrás en que fila estas, en que celda, en que columna, "normalmente" las tablas de datos se manejan en forma de filas y columnas, donde las columnas son los campos y las filas son los registros, de esta forma la información de optimiza, "normalmente", los campos son los suficientes para poder evaluarlos uno por uno, como en el ejemplo que te di, con ese código, ya no necesitas imagen ninguna para ejecutar la macro, pero casi estoy seguro que hay un problema de entendimiento quiero pensar que la distribución de tu información esta bien y que soy no fui capaz de entenderte, la lucha se le hizo y se le puede seguir haciendo, si lo deseas, puedo darte mi opinión de tu archivo si me lo envías, saludos...
Mauricio
[email protected]
Hola Mauricio, te acabo de enviar a tu dirección de correo, mi fichero excel.
Siento darte tanto la lata
Gracias por tu interés.
No llego el archivo anexo, reenvíalo
Te lo he vuelto a enviar
Ya lo tengo, en cuanto tenga algo te contesto por el correo, así que si no tienes ningún inconveniente, finaliza esta pregunta
Espero impaciente esa solución.
Por tu dedicación al asunto y rapidez en contestarme te doy la puntuación de excelente.
Gracias, y si tengo alguna vez otra duda, no dudes de que pediré tu ayuda.
Un amigo. Juan Carlos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas