Ниже строка кода VBA не работает для удаления листа в книге Excel не работает в Excel 365 - PullRequest
0 голосов
/ 16 апреля 2019

Я использовал ниже строку кода VBA:

Sub abc()
Dim wb As Workbook
Set wb = Workbooks("Book1.xlsx")
wb.Sheets("sheet1").Activate
On Error Resume Next
wb.Sheets("Sheet2").Delete
wb.Sheets("Sheet3").Delete

End Sub

Для использования этого кода у меня есть 1 пустой файл Excel (Book1.xlsx) с 2 листами (sheet1 и sheet2), когда я запускаю этот код в Excel 2013, он работает нормально, но когда я использую тот же код в Excel 365, его сообщение об ошибке выброса (Ошибка времени выполнения 9: индекс находится вне диапазона). Может кто-нибудь сказать мне, почему этот код не работает в Excel 365, хотя он работает в Excel 2013.

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019
Sub deleteSelectedSheets()
    Dim wb         As Workbook
    Dim sht        As Worksheet

    Set wb = Workbooks("Your.xlsx")

    For Each sht In wb.Worksheets
        Select Case sht.name
            Case Is = "Sheet1"  ' You can add as many case as you want
                sht.Delete
            Case Is = "Sheet2"
                sht.Delete
            Case Else
                ' Do nothing
        End Select
    Next sht
End Sub
0 голосов
/ 16 апреля 2019
Option Explicit

Sub abc()

    Dim wb As Workbook

    Set wb = Workbooks("Frou Frou.xlsx") '<- Check if the workbook has the correct name.

    With wb

        Application.DisplayAlerts = False '<- Remove alerts asking for confirmation of deleting the sheet

            .Sheets("Sheet2").Delete '<- Check if the both sheets appear in the workbook.
            .Sheets("Sheet3").Delete

        Application.DisplayAlerts = True '<- Remove alerts

    End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...