Nombre de Hoja

09/02/2008 - 17:23 por Nicola Lucadamo | Informe spam
Hola a todos,

es posible en Excel 2003 programar, para que el nombre de una o varias hojas
de cálculo de un archivo, se puedan colocar automáticamente.

Por ejemplo:

En una hoja de cálculo en la celda "A1" tengo escrito ENERO 2008.

Hay alguna manera de programar para que el nombre de la hoja también sea
ENERO 2008 sin tener que escribirlo.

De antemano Gracias.

Nicola Lucadamo

Preguntas similare

Leer las respuestas

#1 Ivan
09/02/2008 - 19:56 | Informe spam
hola Nicola

En una hoja de cálculo en la celda "A1" tengo escrito ENERO 2008.







Hay alguna manera de programar para que el nombre de la hoja también sea
ENERO 2008 sin tener que escribirlo.<<<



a falta de mas detalles prueba con cosas tipo a las siguientes =>

si es la hoja activa ->

ActiveSheet.Name = range("a1")

recorriendo las hojas del libro y cambiando el nombre a las que
contengan algo en A1

dim hj as worksheet
for each hj in thisworkbook.worksheets
with hj
if .[a1]<>"" then .name=.[a1]
end with
next


solo son dos posibilidades de las muchas que en funcion de tus
necesidades reales podrias usar

OJO: en cualquiera de los casos, tanto estos como [me atreveria a
decir] casi cualquier otro, deberias proveer un control de errores
para el caso de posibles nombres duplicados (como poco)

espero te ayude

un saludo
Ivan
Respuesta Responder a este mensaje
#2 Nicola Lucadamo
11/02/2008 - 18:06 | Informe spam
Hola Ivan,

Perdona la ignorancia. Esas instrucciones que me indicas, van en alguna
parte de la hoja o debe crearse una macro?

Gracias


"Ivan" escribió en el mensaje
news:
hola Nicola
En una hoja de cálculo en la celda "A1" tengo escrito ENERO 2008.







Hay alguna manera de programar para que el nombre de la hoja también sea
ENERO 2008 sin tener que escribirlo.<<<



a falta de mas detalles prueba con cosas tipo a las siguientes =>

si es la hoja activa ->

ActiveSheet.Name = range("a1")

recorriendo las hojas del libro y cambiando el nombre a las que
contengan algo en A1

dim hj as worksheet
for each hj in thisworkbook.worksheets
with hj
if .[a1]<>"" then .name=.[a1]
end with
next


solo son dos posibilidades de las muchas que en funcion de tus
necesidades reales podrias usar

OJO: en cualquiera de los casos, tanto estos como [me atreveria a
decir] casi cualquier otro, deberias proveer un control de errores
para el caso de posibles nombres duplicados (como poco)

espero te ayude

un saludo
Ivan
Respuesta Responder a este mensaje
#3 Principiante
11/02/2008 - 19:16 | Informe spam
Probe la segunda opcion y funciona perfecto!

Funciona mediante macro


"Nicola Lucadamo" escribió en el mensaje
news:e2p4%
Hola Ivan,

Perdona la ignorancia. Esas instrucciones que me indicas, van en alguna
parte de la hoja o debe crearse una macro?

Gracias


"Ivan" escribió en el mensaje
news:
hola Nicola
En una hoja de cálculo en la celda "A1" tengo escrito ENERO 2008.







Hay alguna manera de programar para que el nombre de la hoja también sea
ENERO 2008 sin tener que escribirlo.<<<



a falta de mas detalles prueba con cosas tipo a las siguientes =>

si es la hoja activa ->

ActiveSheet.Name = range("a1")

recorriendo las hojas del libro y cambiando el nombre a las que
contengan algo en A1

dim hj as worksheet
for each hj in thisworkbook.worksheets
with hj
if .[a1]<>"" then .name=.[a1]
end with
next


solo son dos posibilidades de las muchas que en funcion de tus
necesidades reales podrias usar

OJO: en cualquiera de los casos, tanto estos como [me atreveria a
decir] casi cualquier otro, deberias proveer un control de errores
para el caso de posibles nombres duplicados (como poco)

espero te ayude

un saludo
Ivan


Respuesta Responder a este mensaje
#4 Ivan
12/02/2008 - 03:15 | Informe spam
hola Nicola,

Perdona la ignorancia.<<<







no creo que haya nada que perdonar. Como +/- decia una frase que
acompañaba a algun forero=>

"todos somos ignorantes, lo unico que no todos ignoramos las mismas
cosas"

Esas instrucciones que me indicas, van en alguna parte de la hoja o debe crearse una macro? <<<







disculpame tu a mi. Al incluir el termino 'programar' en tu consulta
original di por hecho que pedias algo por codigo/macro

efectivamente debes crear una macro, pero en este caso abriendo el
editor de VBa y escribiendo o copiando/pegando el codigo en el sitio
(modulo) adecuado, +/- como te explico a continuacion

[no estoy seguro de si no hay alguna posibilidad via funciones de
hoja, que creo que no, aunque me suena que alguna vez he leido por
aqui algo al respecto,]

en cualquier caso te explico un poco como hacerlo, pero en realidad
la propia consulta deja muchos cabos sueltos. con lo que la aplicacion
real en tu caso seguramente requerira de mas de una modificacion

para empezar:

.-> abre un nuevo libro

en el 1er caso vamos a hacer que cuando escribas algo en la celda B1
de la hoja 1 se ponga lo escrito como nombre de la celda
automaticamente al pulsar intro o tab o salir de la celda, en
definitiva (OJO en cualquier caso te avisara si el nombre no es valido
o esta duplicado)

.-> estando en la hoja haz click secundario sobre el nombre de la hoja
(en la pestaña de la ñisma) => elige Ver codigo

se te abrira el editor de VBa en el modulo correspondiente a la hoja
en la que estabas

en esta ventana copia/pega este codigo (ojo: fijate que quede como en
el foro)=>

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
On Error Resume Next
If Target <> "" Then Me.Name = Target
If Err.Number <> 0 Then MsgBox _
"No se puede cambiar el nombre a la hoja " _
& Me.Name & vbCr & "Comprueba que el nombre" _
& " es valido o no esta duplicado"
On Error GoTo 0
End If
End Sub

ya lo tendriamos preparado para cambiar el nombre de la hoja 1 cuando
escribamos algo en la celda B1

ahora el 2º caso=>

en este caso vamos a optar por una macro que cambiaria el nombre de
todas las hojas que tengan algo escrito en su celda A1.

esta macro la ejecutarias desde la hoja cuando te haga falta (podrias
asignarsela a un boton incrustado, a uno de una barra de herramientas
personalizada, a una forma de dibujo, etc, ... o asignarle un atajo de
teclado, o ejecutarla directamente desde el cuadro 'Macros' (Alt+F8
paraa mostrarlo), o ...)

Para ello insertamos un 'modulo' normal=>

.->Menu insertar (del editor de vba) => elige Modulo (a secas, no de
clase)

.-> en la ventana que se te habra abierto es donde debes pegar este
codigo

Sub CambiarNombreHoja()
Dim hj As Worksheet
For Each hj In ThisWorkbook.Worksheets
With hj
On Error Resume Next
If .[a1] <> "" Then .Name = .[a1]
If Err.Number <> 0 Then MsgBox _
"No se puede cambiar el nombre a la hoja " _
& .Name & vbCr & "Comprueba que el nombre" _
& " es valido o no esta duplicado"
On Error GoTo 0
End With
Next
End Sub

ahora puedes volver a excel, pej. cerrando el editor, o pulsando Alt
+F11

para probar la 1ª, ve a la hoja 1 (ya estaras seguramnetnte, pero por
si acaso) y escribe algo en la celda B1 y dale a intro (pej)

para la 2ª escribe algo en la celda A1 de todes las hojas que desees,
y una vez hecho esto pulsa Alt+F8 para abrir el cudro de dialogo
Macros, => selecciona la macro 'CambiarNombreHoja' => dale a ejecutar

observa el resultado y si tienes dudas, problemas y/o no se ajusta
exactamente a lo que buscas comentas.

espero te ayude

un saludo
Ivan

PD: solo por que lo habia escrito al principio y por no borrarlo=>

.-otras opciones para abrir el editor de VBa => ve al menu
Herramientas => Macro => Ver editor de visual basic

.- o directamente pulsa => Alt+F11
Respuesta Responder a este mensaje
#5 Nicola Lucadamo
12/02/2008 - 20:03 | Informe spam
Hola Ivan,

gracias por tus comentarios y sugerencias. Probé lo que me indicaste y
funciona perfectamente bien.
No tengo experiencia con Visual Basic y por eso pregunto como hacer o que
agregar a la rutina del 1er caso para que ocurra lo mismo, pero tomando el
valor de una celda programada.

Es decir, si deseo que el nombre de la hoja sea igual al contenido de la
celda $B$1, la cual esta programada para que en ella aparezca en nombre del
mes de la fecha que se encuentra en la celda la celda A1.

En este momento la rutina del 1er caso solo funciona después de escribir
algo en la celda $B$1 y hacer Enter.

De antemano gracias.


"Ivan" escribió en el mensaje
news:
hola Nicola,

Perdona la ignorancia.<<<







no creo que haya nada que perdonar. Como +/- decia una frase que
acompañaba a algun forero=>

"todos somos ignorantes, lo unico que no todos ignoramos las mismas
cosas"

Esas instrucciones que me indicas, van en alguna parte de la hoja o debe
crearse una macro? <<<







disculpame tu a mi. Al incluir el termino 'programar' en tu consulta
original di por hecho que pedias algo por codigo/macro

efectivamente debes crear una macro, pero en este caso abriendo el
editor de VBa y escribiendo o copiando/pegando el codigo en el sitio
(modulo) adecuado, +/- como te explico a continuacion

[no estoy seguro de si no hay alguna posibilidad via funciones de
hoja, que creo que no, aunque me suena que alguna vez he leido por
aqui algo al respecto,]

en cualquier caso te explico un poco como hacerlo, pero en realidad
la propia consulta deja muchos cabos sueltos. con lo que la aplicacion
real en tu caso seguramente requerira de mas de una modificacion

para empezar:

.-> abre un nuevo libro

en el 1er caso vamos a hacer que cuando escribas algo en la celda B1
de la hoja 1 se ponga lo escrito como nombre de la celda
automaticamente al pulsar intro o tab o salir de la celda, en
definitiva (OJO en cualquier caso te avisara si el nombre no es valido
o esta duplicado)

.-> estando en la hoja haz click secundario sobre el nombre de la hoja
(en la pestaña de la ñisma) => elige Ver codigo

se te abrira el editor de VBa en el modulo correspondiente a la hoja
en la que estabas

en esta ventana copia/pega este codigo (ojo: fijate que quede como en
el foro)=>

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
On Error Resume Next
If Target <> "" Then Me.Name = Target
If Err.Number <> 0 Then MsgBox _
"No se puede cambiar el nombre a la hoja " _
& Me.Name & vbCr & "Comprueba que el nombre" _
& " es valido o no esta duplicado"
On Error GoTo 0
End If
End Sub

ya lo tendriamos preparado para cambiar el nombre de la hoja 1 cuando
escribamos algo en la celda B1

ahora el 2º caso=>

en este caso vamos a optar por una macro que cambiaria el nombre de
todas las hojas que tengan algo escrito en su celda A1.

esta macro la ejecutarias desde la hoja cuando te haga falta (podrias
asignarsela a un boton incrustado, a uno de una barra de herramientas
personalizada, a una forma de dibujo, etc, ... o asignarle un atajo de
teclado, o ejecutarla directamente desde el cuadro 'Macros' (Alt+F8
paraa mostrarlo), o ...)

Para ello insertamos un 'modulo' normal=>

.->Menu insertar (del editor de vba) => elige Modulo (a secas, no de
clase)

.-> en la ventana que se te habra abierto es donde debes pegar este
codigo

Sub CambiarNombreHoja()
Dim hj As Worksheet
For Each hj In ThisWorkbook.Worksheets
With hj
On Error Resume Next
If .[a1] <> "" Then .Name = .[a1]
If Err.Number <> 0 Then MsgBox _
"No se puede cambiar el nombre a la hoja " _
& .Name & vbCr & "Comprueba que el nombre" _
& " es valido o no esta duplicado"
On Error GoTo 0
End With
Next
End Sub

ahora puedes volver a excel, pej. cerrando el editor, o pulsando Alt
+F11

para probar la 1ª, ve a la hoja 1 (ya estaras seguramnetnte, pero por
si acaso) y escribe algo en la celda B1 y dale a intro (pej)

para la 2ª escribe algo en la celda A1 de todes las hojas que desees,
y una vez hecho esto pulsa Alt+F8 para abrir el cudro de dialogo
Macros, => selecciona la macro 'CambiarNombreHoja' => dale a ejecutar

observa el resultado y si tienes dudas, problemas y/o no se ajusta
exactamente a lo que buscas comentas.

espero te ayude

un saludo
Ivan

PD: solo por que lo habia escrito al principio y por no borrarlo=>

.-otras opciones para abrir el editor de VBa => ve al menu
Herramientas => Macro => Ver editor de visual basic

.- o directamente pulsa => Alt+F11
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida