Crear nueva hoja con nombre definido y numero consecutivo consecutivo

Hola expertos soy nuevo en esto de macros.

Necesito ayuda de como crear una nueva hoja con el nombre "Auto" esto enlazado a un numero consecutivo. Ejemplo :la primera hoja se llama "Auto1"

Ahora bien, si ya tengo creado "Auto1", y creo otra hoja se ira a llamar "Auto2" me explico?

Tambien desearia que si uno borra algunas de las hojas me cree la nueva hoja con el numero que falta.

Ejemplo:

mi libro tiene 5 hojas llamadas: "Auto1" , "Auto2" , "Auto3" , "Auto6" , "Auto7"

se nota que se han borrado el 4 y el 5. Si deseo crear otra hoja se va a llamar "auto4" ( Esto llenando el campo del Auto4 que no se encuentra  el las hojas)

Esto seria lo que necesitaria.

En resumen, lo que me imagino que deberia hacer la macro al presionar el boton es: que me busque si entre las hojas existe el nombre "Auto" & 1, y si ese nombre existe que busque "Auto" & 2, y asi sucesivamente hasta que encuentre un nombre que no existe, y ese nombre seria el nombre de la nueva hoja.

Espero me hayan comprendido ya que no se explicarme muy bien.

Muchas Gracias

2 Respuestas

Respuesta
1

Si que siga creando hojas porque no se cuantas puedo necesitar. Con respecto a la otra pregunta, siempre van a haber hojas porque hay otras hojas con otros nombres. Pero las que necesito cree la macro que tiene que llevar la palabra Auto.

Respuesta
1

Y si tienes las hojas 1,2,3,4,5 quieres que te cree la hoja 6 o que no haga nada. ¿Y si no tienes hojas que te cree la hoja 1?

Hola experto, Si que siga creando hojas porque no se cuantas puedo necesitar. Con respecto a la otra pregunta, siempre van a haber hojas porque hay otras hojas con otros nombres. pero las que necesito cree la macro que tiene que llevar la palabra Auto.

Muchas gracias dante

Con la siguiente macro, te crea las hojas que faltan y siempre te crea una hoja más. Por ejemplo si tienes esto

1, 2, 4

El resultado es:

1,2,3,4,5

También la macro se encarga de ordenarte las hojas

Si tienes esto

4,2

El resultado es:

1,2,3,4,5

Sigue las Instrucciones para un botón y ejecutar la macro

1. Abre tu libro de Excel

2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11

3. En el menú elige Insertar / Módulo

4. En el panel del lado derecho copia la macro

5. Ahora para crear un botón, puedes hacer lo siguiente:

6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas

7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.

8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”

9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: crearhojas

10. Aceptar.

11. Para ejecutarla dale click a la imagen.

Dim hojas As New Collection
Sub crearhojas()
'Por.DAM
    Application.ScreenUpdating = False
    xmax = 1
    For Each h In Sheets
        If UCase(Left(h.Name, 4)) = "AUTO" Then
            n = Val(Mid(h.Name, 5))
            If xmax < n Then xmax = n
        End If
    Next
    For i = 1 To xmax
        For Each h In Sheets
            If UCase(h.Name) = UCase("Auto") & i Then
                existe = True
                Exit For
            End If
        Next
        If existe = False Then
            Sheets.Add after:=Sheets(Sheets.Count)
            ActiveSheet.Name = "Auto" & i
        End If
        existe = False
    Next
    Sheets.Add after:=Sheets(Sheets.Count)
    ActiveSheet.Name = "Auto" & xmax + 1
    For Each h In Sheets
        If UCase(Left(h.Name, 4)) = "AUTO" Then
            AddItem h.Name
        End If
    Next
    For Each hj In hojas
        Sheets(hj).Move after:=Sheets(Sheets.Count)
    Next
    Set hojas = Nothing
    Application.ScreenUpdating = True
    MsgBox "Hojas creadas y ordenadas", vbInformation, "CREAR NUEVA HOJA"
End Sub
Sub AddItem(dato As String)
'Por.DAM
    For i = 1 To hojas.Count
        Select Case StrComp(hojas(i), dato, vbTextCompare)
        Case 0: Exit Sub 'ya existe
        Case 1: hojas.Add dato, Before:=i: Exit Sub
        End Select
    Next
    hojas.Add dato 'lo agrega al final
End Sub

Saludos.Dante Amor

No olvides valorar la respuesta.

Muchísimas gracias dante. El código funciona muy bien, solo que tengo una consulta, puede haber alguna forma que solo me cree una hoja a la vez, si rellena la que falta que solo cree la que falta, nada más. Muchas gracias

Cambia la macro por esta

Dim hojas As New Collection
Sub crearhojas()
'Por.DAM
    Application.ScreenUpdating = False
    xmax = 1
    For Each h In Sheets
        If UCase(Left(h.Name, 4)) = "AUTO" Then
            n = Val(Mid(h.Name, 5))
            If xmax < n Then xmax = n
        End If
    Next
    For i = 1 To xmax
        For Each h In Sheets
            If UCase(h.Name) = UCase("Auto") & i Then
                existe = True
                Exit For
            End If
        Next
        If existe = False Then
            Sheets.Add after:=Sheets(Sheets.Count)
            ActiveSheet.Name = "Auto" & i
            Exit For
        End If
        existe = False
    Next
    'Sheets.Add after:=Sheets(Sheets.Count)
    'ActiveSheet.Name = "Auto" & xmax + 1
    For Each h In Sheets
        If UCase(Left(h.Name, 4)) = "AUTO" Then
            AddItem h.Name
        End If
    Next
    For Each hj In hojas
        Sheets(hj).Move after:=Sheets(Sheets.Count)
    Next
    Set hojas = Nothing
    Application.ScreenUpdating = True
    MsgBox "Hojas creadas y ordenadas", vbInformation, "CREAR NUEVA HOJA"
End Sub
Sub AddItem(dato As String)
'Por.DAM
    For i = 1 To hojas.Count
        Select Case StrComp(hojas(i), dato, vbTextCompare)
        Case 0: Exit Sub 'ya existe
        Case 1: hojas.Add dato, Before:=i: Exit Sub
        End Select
    Next
    hojas.Add dato 'lo agrega al final
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas