J'ai une macros qui génère un certain nombre de classurs. J'aimerais que les macros, au début de la course, vérifient si le file contient 2 feuilles de calcul et supprimez-les si elles existent.
Le code que j'ai essayé était:
If Sheet.Name = "ID Sheet" Then Application.DisplayAlerts = False Sheet.Delete Application.DisplayAlerts = True End If If Sheet.Name = "Summary" Then Application.DisplayAlerts = False Sheet.Delete Application.DisplayAlerts = True End If
Ce code renvoie une erreur:
erreur d'exécution # 424, object requirejs.
J'ai probablement le mauvais formatting, mais s'il y a un moyen plus facile de le faire, cela serait très utile.
Considérer:
Sub SheetKiller() Dim s As Worksheet, t As Ssortingng Dim i As Long, K As Long K = Sheets.Count For i = K To 1 Step -1 t = Sheets(i).Name If t = "ID Sheet" Or t = "Summary" Then Application.DisplayAlerts = False Sheets(i).Delete Application.DisplayAlerts = True End If Next i End Sub
REMARQUE:
Parce que nous supprimons , nous exécutons la boucle vers l'arrière.
Essayez ce code:
For Each aSheet In Worksheets Select Case aSheet.Name Case "ID Sheet", "Summary" Application.DisplayAlerts = False aSheet.Delete Application.DisplayAlerts = True End Select Next aSheet
Vous pouvez utiliser On Error Resume Next
il n'est pas nécessaire de boucler toutes les feuilles du classur.
Remarque: Lorsque le classur ne contiendra que ces deux feuilles, seule la première feuille sera supprimée.
Dim book Dim sht as Worksheet set book= Workbooks("SomeBook.xlsx") On Error Resume Next Application.DisplayAlerts=False Set sht = book.Worksheets("ID Sheet") sht.Delete Set sht = book.Worksheets("Summary") sht.Delete Application.DisplayAlerts=True On Error GoTo 0
Worksheets("Sheet1").Delete Worksheets("Sheet2").Delete
essayez ceci dans vos déclarations if:
Application.DisplayAlerts = False Worksheets(“Sheetname”).Delete Application.DisplayAlerts = True