Me encontré con este problema usando Excel 2016, y sorprendentemente DisplayAlerts fue inútil. No estoy seguro si alguien más ha experimentado esto. Todavía estoy seguro de por qué, pero la lectura de este thread, de acuerdo con las observaciones del método Worksheet.Delete (here):
Cuando se elimina una hoja de cálculo, este método muestra un cuadro de diálogo que solicita al usuario para confirmar la eliminación. Este cuadro de diálogo se muestra de manera predeterminada. Cuando se llama al objeto Hoja de cálculo, el método Delete devuelve un valor booleano que es False si el usuario hizo clic en Cancelar en el cuadro de diálogo o en True si el usuario hizo clic en Eliminar.
En Excel 2016, aunque Application.DisplayAlerts se estableció en False, siguió mostrando la alerta después (o mejor dicho, antes) de la eliminación.
no he encontrado un verdadero trabajo en torno todavía, así que simplemente estoy haciendo las hojas que desea eliminar "desaparecer" por medio de un bucle for each
:
Sht.UsedRange.clear For each shp in sht.Shapes shp.Delete Next For each nm in sht.Parent.Names if nm.RefersToRange.Parent is sht then nm.Delete Next sht.visible = xlSheetVeryHidden
(código es un proyecto sin marcar ; eventuales errores se pueden tratar con un on error resume next
en su mayoría)
No es ideal, pero hace lo que necesito (a cambio de más memoria, claro). Tal vez debería convertir esta respuesta en una pregunta y ver si alguien tiene una mejor idea para Excel 2016.
Quizás soy solo yo, pero me gusta * restaurar * el valor anterior en lugar de establecerlo en 'True'. Es decir, 'oldvalue = Application.DisplayAlerts',' Application.DisplayAlerts = False', 'sheet.Delete',' Application.DisplayAlerts = oldvalue'. –
@ Andre - Buen toque, defina algo a tener en cuenta al cambiar la configuración de la aplicación, nunca se sabe cómo comenzaron y puede evitar la asignación de la depuración más adelante. –