Nombre de hojas NO cambiable

No tomes en cuenta la linea como tal y si el nombre de hoja en Sheets("Base")

If ThisWorkbook.Sheets("Base").Range("C" & n + 3).Hyperlinks.Count <> 0 Then

En varias lineas exite esto Sheets("Base").

Si alguien le dá para cambiar el nombre en la pestaña, lo hace y echa a perder todo.

Pudiera colocar algo así Sheets(1).

En este caso en el Editor VBA está

Base(Base) ¿Porque si coloco Sheets(Base). No me dá?. Tampoco me dá Sheets(1) y si diera, pudiera cambiar el nombre de hoja de Base(Base) a XXX(Base) y pasaría la hoja en el editor a estar de ultima, aquí ya no dá el Sheets(1) pero si tal vez Sheets(10) (si tiene 9 adelante

Yo tengo macro para colocar en

Ejemplo:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

If Hoja1.Name <> "Trabajo" Then Hoja1.Name = "Trabajo"
End Sub

o
Private Sub Workbook_Open()

If Hoja1.Name <> "Trabajo" Then Hoja1.Name = "Trabajo"
End Sub

Pero no quisiera llegar a eso.


Alguna solucion?

1 Respuesta

Respuesta
1

Las hojas tienen, por así decirlo, 3 nombres

El nombre interno, en este caso tu hoja se llama "base" (solamente se puede cambiar desde VBA)

El nombre externo, es el nombre que se ve en la pestaña, en tu caso, también se llama "base"

Y también tienen un índice, como ya sabes, van numeradas las hojas de 1 a n.

Entonces si tienes esto, estás ocupando el nombre externo

If ThisWorkbook.Sheets("Base").Range("C" & n + 3).Hyperlinks.Count <> 0 Then

Si quieres ocupar el nombre interno, utiliza esto

If base.Range("C" & n + 3).Hyperlinks.Count <> 0 Then

No puedes poner esto

If ThisWorkbook.base.Range("C" & n + 3).Hyperlinks.Count <> 0 Then

Porque base no es una propiedad de ThisWorkbook

otro ejemplo

Sheets("base").Select

igual a
base.Select

Tienes que revisar todo el código y hacer los cambios

Saludos. DAM

Pues así está en el código de Principal en el evento Crearlista

If ThisWorkbook.Sheets("Base").Range("C" & n + 3).Hyperlinks.Count <> 0 Then

Pero no quiero usar el nombre de hoja externo y si usar aquí el nombre interno que solo se pueda cambiar desde el editor VBA, porque he entendido que Sheets("Base"). es externo
Lo que quiero precisamente es usar el nombre interno en el código, que solo se cambia desde el Editor VBA por si alguien se le ocurre cambiar el nombre a la pestaña, esto no influía en la ejecución del código (macro)
¿seria algo así?

If ThisWorkbook.Base.Range("C" & n + 3).Hyperlinks.Count <> 0 Then

OK, veo que tampoco es así, leyendo lo anterior tuyo pero, entonces dejame esta linea a que use el nombre interno

If ThisWorkbook.Sheets("Base").Range("C" & n + 3).Hyperlinks.Count <> 0 Then

Los cambos los haré con gusto, lo que no quiero es tener algún momento de pesadilla al alguien cambiarle el nombre externo (en la pestaña), solo dame el ejemplo en esa linea
Voy probando este tuyo

If base.Range("C" & n + 3).Hyperlinks.Count <> 0 Then

Si, probé y resulto perfecto.
Alguna cosa te diré via E-Mail

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas