나는 그것이 "Or"때문이라는 것을 알고 있지만 누군가 그것이 왜 작동하지 않는지 설명 할 수 있기를 바랐다.
If (Sheet.Name <> "Dep 1" Or "Test") Then
^
Sub DeleteSheet()
Dim Sheet As Worksheet
Application.DisplayAlerts = False
For Each Sheet In ActiveWorkbook.Sheets
If (Sheet.Name <> "Dep 1" Or "Test") Then
Sheet.Delete
End If
Next Sheet
Application.DisplayAlerts = False
End Sub
이 게시물에 대한 나의 "2 센트":
의미있는 변수 이름을 사용하되 Excel의 저장 단어와 너무 가까운 이름은 사용 하지 마십시오 . Dim Sheet
와 유사한 85 % ~이다 Sheets
의 유형을이다 Object
, 나는 사람들이 얻을 여기에 이렇게 많은 글을 본 적이 cell
과 Cells
혼합 업 및 런타임 오류가 발생합니다.
난 당신을 전환했습니다 If
과 Select Case .Name
당신이 가지고있는 미래에 더 추가 할 경우,이 방법, Worksheets
또는 기타 다른 작업을 수행하려면 Worksheets
,이 코드를 수정하는 것이 더 쉬울 수 있습니다.
암호
Option Explicit
Sub DeleteSheet()
Dim ws As Worksheet
Application.DisplayAlerts = False
For Each ws In ActiveWorkbook.Sheets
With ws
Select Case .Name
Case "Dep 1", "Test"
' do nothing for now
Case Else
.Delete
End Select
End With
Next ws
Application.DisplayAlerts = True ' <-- restore setting
End Sub
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다