Saber el nombre de un objeto que se encuentra en la fila X columna Y

10/06/2005 - 11:02 por Manolito | Informe spam
Pues eso, tengo en una hoja de exell varias Pictures y yo quiero saber el
nombre
preguntandole a la celda que la contiene

o sea preguntarle al PC
¿dime el nombre de la picture que está en la fila 1 columna 2?

Gracias

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
10/06/2005 - 12:00 | Informe spam
"Manolito" escribió en el mensaje news:
Pues eso, tengo en una hoja de exell varias Pictures y yo quiero saber el
nombre
preguntandole a la celda que la contiene

o sea preguntarle al PC
¿dime el nombre de la picture que está en la fila 1 columna 2?

Gracias





Que yo sepa, no hay otra forma de hacerlo que recorrer la colección Shapes de la hoja, algo como:


Sub LlamarAFunción()
Dim shF As Shape
Set shF = QuéFormaEstáEnLaCelda([Hoja1!A1]) 'Hoja y celda a investigar
If Not shF Is Nothing Then MsgBox shF.Name
End Sub

Function QuéFormaEstáEnLaCelda(rngC As Range) As Shape
Dim shF As Shape

For Each shF In rngC.Parent.Shapes
If Not Intersect(rngC, Range(shF.TopLeftCell, shF.BottomRightCell)) Is Nothing Then
Set QuéFormaEstáEnLaCelda = shF
Exit Function
End If
Next shF
End Function


El código está lo más simplificado posible puesto que no contempla la posibilidad de que en una misma celda se encuentren varias formas (o, para el caso, varios "trozos" de forma).
Un saludo.


Fernando Arroyo
MS MVP - Excel
www.excelesp.com
Respuesta Responder a este mensaje
#2 Manolito
10/06/2005 - 12:21 | Informe spam
Como se hace para pasarle un integer con el numero de fila y otro integer
con el numero de columna, en lugar de un Rango?


"Fernando Arroyo" escribió en el mensaje
news:
"Manolito" escribió en el mensaje
news:
Pues eso, tengo en una hoja de exell varias Pictures y yo quiero saber el
nombre
preguntandole a la celda que la contiene

o sea preguntarle al PC
¿dime el nombre de la picture que está en la fila 1 columna 2?

Gracias





Que yo sepa, no hay otra forma de hacerlo que recorrer la colección Shapes
de la hoja, algo como:


Sub LlamarAFunción()
Dim shF As Shape
Set shF = QuéFormaEstáEnLaCelda([Hoja1!A1]) 'Hoja y celda a investigar
If Not shF Is Nothing Then MsgBox shF.Name
End Sub

Function QuéFormaEstáEnLaCelda(rngC As Range) As Shape
Dim shF As Shape

For Each shF In rngC.Parent.Shapes
If Not Intersect(rngC, Range(shF.TopLeftCell, shF.BottomRightCell))
Is Nothing Then
Set QuéFormaEstáEnLaCelda = shF
Exit Function
End If
Next shF
End Function


El código está lo más simplificado posible puesto que no contempla la
posibilidad de que en una misma celda se encuentren varias formas (o, para
el caso, varios "trozos" de forma).
Un saludo.


Fernando Arroyo
MS MVP - Excel
www.excelesp.com
Respuesta Responder a este mensaje
#3 Fernando Arroyo
10/06/2005 - 12:35 | Informe spam
"Manolito" escribió en el mensaje news:%
Como se hace para pasarle un integer con el numero de fila y otro integer
con el numero de columna, en lugar de un Rango?






Sustituye

Set shF = QuéFormaEstáEnLaCelda([Hoja1!A1])

con

Set shF = QuéFormaEstáEnLaCelda(Worksheets("Hoja1").Cells(1, 1))

Ten en cuenta que en la propiedad Cells el primer número representa la fila y el segundo la columna.
Un saludo.


Fernando Arroyo
MS MVP - Excel
Respuesta Responder a este mensaje
#4 Manolito
10/06/2005 - 13:21 | Informe spam
Le explico el problema que tengo desde el principio.
Yo tenia unas imagenes dentro de unas celdas que las mostraba o no con esta
instruccion:
ActiveSheet.Shapes("Picture 62").Visible = True

Yo primero las inserte manualmente con el comando Insertar imagen desde
archivo (Yo no inserto nunca vinculos a las imagenes)
Y parece ser que se ha cambiado los nombres de las imagenes por arte de
magia
Entonces para solucionar esto se me ha ocurrido la idea de preguntarle a la
celda que imagen contiene y cual es su nombre.
pero tengo un problema
yo le pregunto por la fila 1 y columna 1 y me activa una imagen que esta en
la fila 1 columna 5
Pongo esto :
QuéFormaEstáEnLaCelda(ActiveSheet.Cells(Fil & "," & 1))
A que se debe esto?
Hay alguna otra forma de arreglarlo ?
Ha que se debe que se hayan cambiado los nombres?



"Fernando Arroyo" escribió en el mensaje
news:
"Manolito" escribió en el mensaje
news:%
Como se hace para pasarle un integer con el numero de fila y otro integer
con el numero de columna, en lugar de un Rango?






Sustituye

Set shF = QuéFormaEstáEnLaCelda([Hoja1!A1])

con

Set shF = QuéFormaEstáEnLaCelda(Worksheets("Hoja1").Cells(1, 1))

Ten en cuenta que en la propiedad Cells el primer número representa la fila
y el segundo la columna.
Un saludo.


Fernando Arroyo
MS MVP - Excel
Respuesta Responder a este mensaje
#5 Fernando Arroyo
10/06/2005 - 13:32 | Informe spam
"Manolito" escribió en el mensaje news:
Le explico el problema que tengo desde el principio.
Yo tenia unas imagenes dentro de unas celdas que las mostraba o no con esta
instruccion:
ActiveSheet.Shapes("Picture 62").Visible = True

Yo primero las inserte manualmente con el comando Insertar imagen desde
archivo (Yo no inserto nunca vinculos a las imagenes)
Y parece ser que se ha cambiado los nombres de las imagenes por arte de
magia
Entonces para solucionar esto se me ha ocurrido la idea de preguntarle a la
celda que imagen contiene y cual es su nombre.
pero tengo un problema
yo le pregunto por la fila 1 y columna 1 y me activa una imagen que esta en
la fila 1 columna 5
Pongo esto :
QuéFormaEstáEnLaCelda(ActiveSheet.Cells(Fil & "," & 1))
A que se debe esto?
Hay alguna otra forma de arreglarlo ?
Ha que se debe que se hayan cambiado los nombres?





Yo creo que el problema está en la forma en que le pasa la celda a la función. Pruebe sustituyendo:

(Fil & "," & 1)

por:

(Fil, 1)

Un saludo.


Fernando Arroyo
MS MVP - Excel
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida