IT

VBA를 사용하여 Excel에서 워크시트 삭제

itgroup 2023. 4. 18. 22:30
반응형

VBA를 사용하여 Excel에서 워크시트 삭제

많은 워크북을 생성하는 매크로가 있습니다.실행 시작 시 매크로에 2개의 스프레드시트가 포함되어 있는지 확인하고 있으면 삭제해 주었으면 합니다.

내가 시도한 코드는:

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

이 코드는 오류를 반환하고 있습니다.

런타임 오류 #424, 개체가 필요합니다.

제가 포맷을 잘못했을지도 모르지만, 좀 더 쉬운 방법이 있다면 도움이 될 것 같습니다.

고려사항:

Sub SheetKiller()
    Dim s As Worksheet, t As String
    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

주의:

삭제 이기 때문에 루프를 거꾸로 실행합니다.

다음 코드를 사용해 보십시오.

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

사용할 수 있습니다.On Error Resume Next그러면 워크북의 모든 시트를 반복할 필요가 없습니다.

와 함께On Error Resume Next에러는 전파되지 않고 억제됩니다.따라서 시트가 존재하지 않거나 어떤 이유로든 삭제할 수 없는 경우에는 아무 일도 일어나지 않습니다.이 시트를 삭제해, 실패해도 상관없습니다.엑셀이 시트를 찾기로 되어있기 때문에 당신은 어떤 검색도 하지 않습니다.

주의: 워크북에 이러한 두 시트만 포함되어 있으면 첫 번째 시트만 삭제됩니다.

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

if 스테이트먼트 내에서 이 조작을 실시합니다.

Application.DisplayAlerts = False
Worksheets(“Sheetname”).Delete
Application.DisplayAlerts = True

언급URL : https://stackoverflow.com/questions/31475376/delete-worksheet-in-excel-using-vba

반응형