Si tengo un objeto Range, por ejemplo, digamos que se refiere a la celda A1
de una hoja de cálculo llamada Libro1
. Entonces sé que llamando a Address()
obtendré una simple referencia local: $A$1
. Sé que también se puede llamar como Address(External:=True)
para obtener una referencia que incluya el nombre del libro de trabajo y el nombre de la hoja de cálculo: [Libro1]Hoja1!$A$1
.
Lo que quiero es obtener una dirección que incluya el nombre de la hoja, pero no el nombre del libro. Realmente no quiero llamar a Address(External:=True)
e intentar eliminar el nombre del libro yo mismo con funciones de cadena. ¿Hay alguna llamada que pueda hacer en el rango para obtener Hoja1!$A$1
?
La única manera que se me ocurre es concatenar el nombre de la hoja de cálculo con la referencia de la celda, de la siguiente manera:
Dim cell As Range
Dim cellAddress As String
Set cell = ThisWorkbook.Worksheets(1).Cells(1, 1)
cellAddress = cell.Parent.Name & "!" & cell.Address(External:=False)
EDITAR:
Modificar la última línea a:
cellAddress = "'" & cell.Parent.Name & "'!" & cell.Address(External:=False)
si quieres que funcione aunque haya espacios u otros caracteres raros en el nombre de la hoja.
Ben tiene razón. Tampoco se me ocurre ninguna forma de hacerlo. I'd sugieren ya sea el método Ben recomienda, o el siguiente para eliminar el nombre de libro de trabajo.
Dim cell As Range
Dim address As String
Set cell = Worksheets(1).Cells.Range("A1")
address = cell.address(External:=True)
address = Right(address, Len(address) - InStr(1, address, "]"))
[editar en 2009-04-21]
Como Micah señaló, esto sólo funciona cuando usted ha nombrado que
rango en particular (de ahí .Name ¿alguien?) Sí, ¡ups!
[/edit]
Un poco tarde a la fiesta, lo sé, pero por si alguien más pilla esto en una búsqueda en google (como acabo de hacer yo), también podría probar lo siguiente:
Dim cell as Range
Dim address as String
Set cell = Sheet1.Range("A1")
address = cell.Name
Esto debería devolver la dirección completa, algo así como "=Hoja1!$A$1".
Suponiendo que no desea que el signo igual, se puede quitar con una función Reemplazar:
address = Replace(address, "=", "")