Macro no me acusa la inexistencia de hojas

Elsa te dejo esta macro para corrección de mensaje

Esta macro lo que SOLO no funciona es el aviso de

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim wSheet As Worksheet
On Error Resume Next
'agregar todas las hojas en la matriz
hojas = Array("Tabla1", "Tabla2")
Application.DisplayAlerts = False                       'evita el mensaje de alerta al eliminar
For y = LBound(hojas) To UBound(hojas)
    nbreCopia = "Copia_" & hojas(y)
    Set wSheet = Sheets(nbreCopia)    'verifica si se realizó la copia de esa hoja
    If wSheet Is Nothing Then
        MsgBox "La hoja " & wSheet.Name & " no existe para eliminar", vbInformation + vbOKOnly, "Información"
    Else
        'Si existe la hoja Copia se la elimina previa confirmación
        sino = MsgBox("La hoja " & wSheet.Name & " existe. ¿Deseas eliminarla?", vbQuestion + vbYesNo, "Confirmar")
        If sino = vbYes Then wSheet.Delete
    End If
Next y
Application.DisplayAlerts = True                        'deja el mensaje de alerta activado
End Sub
MsgBox "La hoja " & wSheet.Name & " no existe para eliminar", vbInformation + vbOKOnly, "Información"

Me gustaria que funcionara dentro de este evento que siempre y cuando no exista la hoja wSheet.Name que me lo digiera tambien.

1 respuesta

Respuesta
1

No me están llegando los avisos del foro... la encontré de casualidad.

Mañana me ocuparé de esta consulta si me es posible.

Sdos!

Elsa

Claro, si.

A mi también no me han llegado los avisos. Entre y me dijo un mensaje de que Todo expertos no puede enviarme los acvisos a mi cuenta por que la cuenta no está reconocida, tuve que volver a reconocer el email del registro y volví a recibir.

Así queda tu macro ajustada:

Private Sub Workbook_BeforeClose(Cancel As Boolean)   'al 18/12/20
Dim wSheet As Worksheet
'agregar todas las hojas en la matriz
hojas = Array("Tabla1", "Tabla2")
For y = LBound(hojas) To UBound(hojas)
    nbreCopia = "Copia_" & hojas(y)
    'control de posible hoja inexistente
    On Error Resume Next
    Set wSheet = Sheets(nbreCopia)    'verifica si se realizó la copia de esa hoja
    If Err.Number <> 0 Then
        MsgBox "La hoja " & nbreCopia & " no existe para eliminar", vbInformation + vbOKOnly, "Información"
    Else
        'Si existe la hoja Copia se la elimina previa confirmación
        sino = MsgBox("La hoja " & nbreCopia & " existe. ¿Deseas eliminarla?", vbQuestion + vbYesNo, "Confirmar")
        If sino = vbYes Then
            Application.DisplayAlerts = False                       'evita el mensaje de alerta al eliminar
            Sheets(nbreCopia).Delete
            Application.DisplayAlerts = True                       'habilita nuevamente los mensajes de alerta
        End If
    End If
    On Error GoTo 0
Next y
End Sub

En la instrucción:  sino = MsgBox(.....) podía haber dejado wSheet... la cambié para unificar criterios. 

Pero en el mensaje anterior esa variable quedaba vacía por lo que no podía emitir el mensaje y no saltaba error por tener la instrucción On Error al inicio.

Sdos.

Els

¡Gracias! Elsa. Cierto, se ejecuta como esperaba.

Tengo varias plantillas, algunas con ayuda completa de Dante y otras tu misma, a los cuales tengo que agradecer imensamente. Me gusta tener mis cosas con mínimo de organización

En alguna oportunidad Dante y Gerson me insinúo que yo tenia una empresa, pero no, te diré que soy trabajador a destajo, es decir trabajo por mi cuenta con ayuda de un ayudante, solo los 2 y tengo mi carrito donde me desloco con mi herramienta, trabajo más que todo a domicilio, voy donde me llaman, trabajo de mecánico en maquinaria pesada CAT, John Deere y otras, con 72 años pero aun, no tengo empresa, trabajo con mi identificación personal.

Sé que no m has preguntado pero para que lo sepas.

Gracias miles

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas