Mensaje sino encuentra una hoja

Vengo realizando una macro en donde tengo un botón que me crea una hoja llamada "reporte" luego tengo otro botón que me crea la hoja "detalle" después de la hoja "reporte", el problema que tengo es que sino tengo la hoja "reporte" creada la macro se detiene estoy usando esta linea para la creación de la hoja "detalle".

Worksheets.Add(after:=Worksheets("reporte")).Name = "detalle"

1 respuesta

Respuesta
2

Prueba con esta macro

MsgBox nombreHoja & " ya existe"
    Else
        MsgBox nombreHoja & " creada"
    End If
    On Error Resume Next
    Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "detalle"
    On Error GoTo 0
    Sheets("hoja1").Select
End Sub
Function CrearHoja(nombreHoja As String) As Boolean
    Dim existe As Boolean
    On Error Resume Next
    existe = (Worksheets(nombreHoja).Name <> "")
    If Not existe Then
        Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = nombreHoja
    End If
    CrearHoja = existe
End Function

gracias por tu apoyo James Bond pero parece que tu código esta incompleto, ahora lo que necesito es que si cuando el botón que esta con el modulo hace la creación de la hoja "detalle" y la ubica después de la hoja reporte no encuentra la hoja reporte mande un mensaje indicando que hoja reporte no existe, uso esta linea para crear la hoja detalle y ubicarla después de la hoja reporte.

Worksheets.Add(after:=Worksheets("reporte")).Name = "detalle"

Prueba entonces con esta macro

Sub test()
Application.DisplayAlerts = False
atras:
On Error Resume Next
Sheets("reporte").Select
If Err.Number = 0 Then
    Worksheets.Add(after:=Worksheets("reporte")).Name = "detalle"
    If Err.Number = 1004 Then ActiveSheet.Delete: End
End If
If Err.Number = 9 Then Sheets.Add: ActiveSheet.Name = "reporte"
GoTo atras:
Application.DisplayAlerts = True
End Sub

gracias por la macro es muy buena sino tengo la hoja reporte lo crea pero ese no es el proposito para crear la hoja reporte tengo un boton1 donde se crea con varios datos, el otro boton2 crea la hoja detalle detras de la hoja reporte pero a su vez extraer datos de esa hoja todo eso ya lo tengo creado sin problemas, simplemente deseo que cuando le de click al boton2 para crear la hoja detalle con el comando mencionado y no encuentra primero la hoja reporte me de un mensaje indicado que la hoja no encuentra y se detenga la macro.

Se le puede poner una instrucción on err resume next y una variable if si detecta que no existe la hoja entonces se generara un error que el if validara solo que hay un detalle con tu instrucción al hacer esto como quiera va a crear una hoja en blanco con el consecutivo, lo que tienes que hacer es valida primero que exista la hoja, si no existe te pondrá un mensaje y detendrá la macro, si existe entonces aplicara la instrucción que quieres usar.

Sub test()
nombrehoja = "REPORTE"
On Error Resume Next
EXISTE = (Worksheets(nombrehoja).Name <> "")
If Not EXISTE Then
    MsgBox ("NO EXISTE ESTA HOJA"), vbCritical, "AVISO"
    End
Else
    Worksheets.Add(after:=Worksheets("reporte")).Name = "detalle"
End If
On Error GoTo 0
End Sub

¡Gracias! Me sirvió mucho tu código le agregue unas cosas más y la adapte a mi macro y funciona de mil maravilla agradezco mucho tu apoyo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas