Necesito usar el nombre de la hoja

29/12/2007 - 20:09 por OSKAR PRIETO | Informe spam
Quiero crear una función personalizada de excel que me devuelva el nombre de
la hoja actual. He llegado a escribir esto:

Function nombre_hoja() As String
nombre_hoja = ActiveSheet.Name
End Function

pero no actualiza el valor cuando cambio el nombre de la hoja (y el problema
es que la hoja que contiene la función, una vez acabada, la copio varias
veces y la renonbro pero la función no me cambia y tengo que volver a
escribirla en todas las hojas para que actuaclice)

Gracias de antemano.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
29/12/2007 - 20:41 | Informe spam
hola, Oskar !

Quiero crear una funcion personalizada de excel que me devuelva el nombre de la hoja actual. He llegado a escribir esto:
Function nombre_hoja() As String
nombre_hoja = ActiveSheet.Name
End Function
pero no actualiza el valor cuando cambio el nombre de la hoja (y el problema es que la hoja que contiene la funcion
una vez acabada, la copio varias veces y la renonbro pero la funcion no me cambia
y tengo que volver a escribirla en todas las hojas para que actuaclice)



op1: usa como primera linea de tu funcion la instruccion: -> application.volatile

op2: consulta en la ayuda en linea {F1} de excel por la funcion =celda(... con el argumento "nombrearchivo"
-> revisa conversaciones varias al respecto en: -> http://tinyurl.com/2g8sta

OJO: toma en cuenta que donde sea que uses la funcion personalizada devolvera "el mismo nombre de hoja" (la hoja "activa")
a menos que ncluyas instrucciones que identifiquen cual es la hoja de la celda donde se esta usando

de igual forma, con la funcion =celda(... puedes establecer a cual celda se hara referencia (y en consecuencia, a "su hoja")

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 OSKAR PRIETO
30/12/2007 - 00:31 | Informe spam
Hector (o quien sepa la respuesta):

El tema es que quiero determinar el nombre de la hoja en la que se ejecute
la formula. Esto es, que si ejecuto la fórmula en una hoja que se llama
"AGOSTO", cuando ponga en una celda de dicha hoja la función =nombre_hoja,
me de como resultado "AGOSTO". ¿Como puedo determinar cual es la hoja en la
que se está ejecutando la función?

Gracias de antemano.

OSKAR



"Héctor Miguel" escribió en el mensaje
news:
hola, Oskar !

Quiero crear una funcion personalizada de excel que me devuelva el nombre
de la hoja actual. He llegado a escribir esto:
Function nombre_hoja() As String
nombre_hoja = ActiveSheet.Name
End Function
pero no actualiza el valor cuando cambio el nombre de la hoja (y el
problema es que la hoja que contiene la funcion
una vez acabada, la copio varias veces y la renonbro pero la funcion no
me cambia
y tengo que volver a escribirla en todas las hojas para que actuaclice)



op1: usa como primera linea de tu funcion la instruccion: ->
application.volatile

op2: consulta en la ayuda en linea {F1} de excel por la funcion =celda(...
con el argumento "nombrearchivo"
-> revisa conversaciones varias al respecto en: ->
http://tinyurl.com/2g8sta

OJO: toma en cuenta que donde sea que uses la funcion personalizada
devolvera "el mismo nombre de hoja" (la hoja "activa")
a menos que ncluyas instrucciones que identifiquen cual es la hoja de
la celda donde se esta usando

de igual forma, con la funcion =celda(... puedes establecer a cual celda
se hara referencia (y en consecuencia, a "su hoja")

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.


Respuesta Responder a este mensaje
#3 Héctor Miguel
30/12/2007 - 03:00 | Informe spam
hola, Oskar !

El tema es que quiero determinar el nombre de la hoja en la que se ejecute la formula.
Esto es, que si ejecuto la formula en una hoja que se llama "AGOSTO"
cuando ponga en una celda de dicha hoja la funcion =nombre_hoja, me de como resultado "AGOSTO".
Como puedo determinar cual es la hoja en la que se esta ejecutando la funcion?



op1: (OJO si no hay formulas que obliguen a un re/calculo del modelo, no se actualiza si solamente cambias el nombre de la hoja)
Function Nombre_hoja() As String
Nombre_hoja = Application.Caller.Parent.Name
End Function

op2: (aunque tambien tiene sus "imponderables")
Function Nombre_hoja() As String
With Application.Caller.Parent
Nombre_hoja = .Name
.Calculate
End With
End Function

op3: usando la funcion de hoja de calculo sugerida: =celda(...
Y... -> requiere que el libro ya haya sido guardado:
=extrae(celda("nombrearchivo"),hallar("]",celda("nombrearchivo"))+1,hoy())

op4: si el nombre de la hoja coincide con el nombre del libro (y son todas en una sola linea <= OJO):

a)
=extrae(celda("nombrearchivo"),si(eserror(hallar("]",celda("nombrearchivo")))
,buscar(2,1/(extrae(celda("nombrearchivo"),fila($1:$255),1)="\")
,fila($1:$255))+1,hallar("]",celda("nombrearchivo"))+1),31)

b)
=sustituir(extrae(celda("nombrearchivo"),si(eserror(hallar("]",celda("nombrearchivo")))
,buscar(2,1/(extrae(celda("nombrearchivo"),fila($1:$255),1)="\")
,fila($1:$255))+1,hallar("]",celda("nombrearchivo"))+1),31),".xls","")

c)
=sustituir(extrae(celda("nombrearchivo"),elegir(1+eserror(hallar("]",celda("nombrearchivo")))
,hallar("]",celda("nombrearchivo"))+1,buscar(2,1/(extrae(celda("nombrearchivo")
,fila($1:$255),1)="\"),fila($1:$255))+1),31),".xls","")

o, por si insertas/eliminas filas entre la 1 y la 255: cambia las formulas fila($1:$255) -> por fila(indirecto("1:255"))

op5: por si el libro aun no ha sido guardado...

a) si se trata de una sola hoja, define un nombre [p.e. Libro] desde insertar / nombre / definir...
con la formula: =indicar.libro(1)
y en la celda utilizas: =extrae(libro,encontrar("]",libro)+1,hoy())

b) si se trata de varias hojas en el libro, utilizas dos nombres:
1) Dcumento formula: =indicar.celda(32+0*hoy(),!$a$1)
2) NombreHoja formula:
=si(eserror(hallar("]",documento)),sustituir(documento,".xls",""),extrae(documento,hallar("]",documento)+1,31))
-> y bajas/usas/... el nombre final [NombreHoja] en la celda donde necesites el dato.

op6: cuando el libro tiene una sola hoja y se llaman igual la hoja y el libro
(tratando de evitar el alargar las formulas unos cuantos caracteres mas)
aqui tienes otra alternativa, definiendo un nombre y usando macro-funciones del (viejo) excel v.4

1) [menu] insertar / nombre / definir...
nombre: [p.e.] NombreArchivo o... NombreLibro o... ???
en el cuadro de edicion de referencias, usa cualquiera de las siguientes formulas (macro-funciones)

a) =indicar.libro(16)
b) =indicar.documento(68)
c) =indicar.documento(88)

solo toma en cuenta que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :D

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ de todas formas, te dejo la propuesta del mensaje anterior con respecto del uso de la funcion =celda(... __
op2: consulta en la ayuda en linea {F1} de excel por la funcion =celda(... con el argumento "nombrearchivo"
-> revisa conversaciones varias al respecto en: -> http://tinyurl.com/2g8sta

OJO: toma en cuenta que donde sea que uses la funcion personalizada devolvera "el mismo nombre de hoja" (la hoja "activa")
a menos que ncluyas instrucciones que identifiquen cual es la hoja de la celda donde se esta usando

de igual forma, con la funcion =celda(... puedes establecer a cual celda se hara referencia (y en consecuencia, a "su hoja")
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida