Como leer el nombre de una celda?

18/08/2003 - 16:56 por Rene Moreno | Informe spam
Hola grupo, a ver si alguien me puede ayudar.
Como puedo obtener el nombre asignado a una celda,
por ejemplo si la celda "A1" tiene el asignado el nombre
"celda1" como puedo saber ese nombre mediante código,
ya intente con "If Range("A1").Name="celda1" then" pero
no funciona porque "Range("A1").Name" devuelve "$A$1"
De antemano gracias a quien pueda ayudarme

Atte. Rene Moreno
"La imaginación es mas importante que el conocimiento"
A.E.

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
18/08/2003 - 21:48 | Informe spam
Tienes que usar dos veces Name:

If Range("A1").Name.Name = "celda1" Then ...

El primer Name devuelve el primer objeto Name que hace referencia a la celda (ojo con esto, porque si hay más de uno devolverá siempre el primero), mientras que el segundo Name es la propiedad Name de dicho objeto. Es un poco complicado de explicar, pero verás que funciona.
Un saludo.


Fernando Arroyo
MS MVP - Excel

"Rene Moreno" escribió en el mensaje news:%23$
Hola grupo, a ver si alguien me puede ayudar.
Como puedo obtener el nombre asignado a una celda,
por ejemplo si la celda "A1" tiene el asignado el nombre
"celda1" como puedo saber ese nombre mediante código,
ya intente con "If Range("A1").Name="celda1" then" pero
no funciona porque "Range("A1").Name" devuelve "$A$1"
De antemano gracias a quien pueda ayudarme

Atte. Rene Moreno
"La imaginación es mas importante que el conocimiento"
A.E.


Respuesta Responder a este mensaje
#2 Rene Moreno
19/08/2003 - 00:47 | Informe spam
¡¡Gracias Fernando, como siempre tienes razón!!

Rene Moreno
"La imaginación es mas importante que el conocimiento"
A.E.
Respuesta Responder a este mensaje
#3 Pepito
19/08/2003 - 05:22 | Informe spam
Hola Fernando,
Pero si un rango no tiene al menos un nombre definido pues
me da error 1004 ok? Hay algo que comprobar primero ?
Toi turbao ;-((
Pepito


Tienes que usar dos veces Name:

If Range("A1").Name.Name = "celda1" Then ...

El primer Name devuelve el primer objeto Name que hace


referencia a la celda (ojo con esto, porque si hay más de
uno devolverá siempre el primero), mientras que el segundo
Name es la propiedad Name de dicho objeto. Es un poco
complicado de explicar, pero verás que funciona.
Un saludo.


Fernando Arroyo
MS MVP - Excel

"Rene Moreno" escribió en


el mensaje news:%23$
Hola grupo, a ver si alguien me puede ayudar.
Como puedo obtener el nombre asignado a una celda,
por ejemplo si la celda "A1" tiene el asignado el nombre
"celda1" como puedo saber ese nombre mediante código,
ya intente con "If Range("A1").Name="celda1" then" pero
no funciona porque "Range("A1").Name" devuelve "$A$1"
De antemano gracias a quien pueda ayudarme

Atte. Rene Moreno
"La imaginación es mas importante que el conocimiento"
A.E.




.

Respuesta Responder a este mensaje
#4 Héctor Miguel
19/08/2003 - 05:44 | Informe spam
Hola, Rene !

1.- Con mis disculpas (por "meterme" donde no me llaman)
2.- "De plano, eche a volar mi imaginaicon" (una "mala costumbre" que tengo)
3.- y solo por ... "mantenerme dentro" de tu consulta original ... :))

... nombre asignado a una celda ... si la celda "A1" tiene asignado ... como puedo saber ese nombre mediante código [...]



==> ¿Que pasa cuando "desconoces" (o no estas seguro de) si la celda...
-o- tiene un nombre "asignado"?
-o- "forma parte de" un nombre (o de mas de uno) con referencia a rangos "NO continuos"?
-o- "forma parte de" un nombre (o de mas de uno) "pero..." como argumentos "dentro" de una formula?

==> Quizas no "sea el momento" pero (estoy seguro que mas adelante) el siguiente codigo podria servir :))
Solo "funciona" para los dos primeros casos ==Sub Celda_En_Nombre()
Dim Nombre As Name, _
Celda As String, Ref_Nombre As String, Mensaje As String
Celda = ActiveCell.Address
On Error Resume Next
For Each Nombre In ActiveWorkbook.Names
Ref_Nombre = Nombre.RefersToRange.Address
If Ref_Nombre <> "" Then
If Not Intersect(Range(Celda), Range(Ref_Nombre)) Is Nothing _
Then Mensaje = Mensaje & "> " & Nombre.Name & vbCr
Ref_Nombre = ""
End If
Next
If Mensaje = "" Then Mensaje = "¡ Ninguno !!!"
MsgBox "Nombres en los que ""interviene"" " & Celda & vbCr & Mensaje
End Sub
_______
Saludos,
Héctor.
MS-MVP
Respuesta Responder a este mensaje
#5 Fernando Arroyo
19/08/2003 - 09:16 | Informe spam
Pienso que la clave del problema está en el fragmento de la ayuda de Excel que puso abcde en este mismo hilo: "Aunque un objeto Range puede tener más de un nombre, no hay un conjunto Names para el objeto Range."

Si existiera ese conjunto Names del objeto Range, se podría averiguar su número mediante la propiedad Count que tienen todos los conjuntos. Pero como no existe el conjunto, hay que intentar acceder directamente, "sin red". Entonces pueden suceder dos cosas:
- si el rango tiene al menos un objeto Name que haga referencia a él, se logrará acceder a dicho objeto (o al primero de ellos según su orden alfabético, si son varios) sin problemas.
- si el rango no tiene ningún objeto Name se producirá el error 1004.

La única forma que yo conozco de prevenir este error es escribiendo una captura de errores, algo como:

On Error GoTo captura
MsgBox ActiveCell.Name.Name
On Error GoTo 0
Exit Sub
captura:
If Err.Number = 1004 Then MsgBox "La celda " & ActiveCell.Address & " no está incluída en ningún objeto Name."

En cualquier caso, si pones el código que te está dando problemas es posible que podamos "afinar" un poco más la posible solución.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Pepito" escribió en el mensaje news:07ca01c36601$281e4a20$
Hola Fernando,
Pero si un rango no tiene al menos un nombre definido pues
me da error 1004 ok? Hay algo que comprobar primero ?
Toi turbao ;-((
Pepito


Tienes que usar dos veces Name:

If Range("A1").Name.Name = "celda1" Then ...

El primer Name devuelve el primer objeto Name que hace


referencia a la celda (ojo con esto, porque si hay más de
uno devolverá siempre el primero), mientras que el segundo
Name es la propiedad Name de dicho objeto. Es un poco
complicado de explicar, pero verás que funciona.
Un saludo.


Fernando Arroyo
MS MVP - Excel

"Rene Moreno" escribió en


el mensaje news:%23$
Hola grupo, a ver si alguien me puede ayudar.
Como puedo obtener el nombre asignado a una celda,
por ejemplo si la celda "A1" tiene el asignado el nombre
"celda1" como puedo saber ese nombre mediante código,
ya intente con "If Range("A1").Name="celda1" then" pero
no funciona porque "Range("A1").Name" devuelve "$A$1"
De antemano gracias a quien pueda ayudarme

Atte. Rene Moreno
"La imaginación es mas importante que el conocimiento"
A.E.




.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida