我试图删除所有工作表,但在工作簿中使用“and's”到“if...then”语句中删除三个工作表,但是正在删除其中一个。我写的内容如下:
Sub delete()
For Each Sheet In Application.Worksheets
Application.DisplayAlerts = False
If (Sheet.Name <> "Close Price" And Sheet.Name <> "Parameters" And Sheet.Name <> "Stock") Then
Sheet.delete
End If
Next Sheet
Application.DisplayAlerts = True
End Sub
我还尝试了以下方法:
Sub delete()
For Each Sheet In Application.Worksheets
Application.DisplayAlerts = False
If (Sheet.Name <> "Close Price" And Sheet.Name <> "Parameters") Then
If (Sheet.Name <> "Stock") Then
Sheet.delete
End If
End If
Next Sheet
Application.DisplayAlerts = True
End Sub
但也不起作用。它尊重“收盘价”和“参数”工作表,但不尊重“股票”工作表。
你知道我该如何解决吗?
非常感谢,祝一切顺利。 grd_aa
最佳答案
可以使用工作表名称数组立即删除工作表。在 For-Each
循环中,将要删除的工作表名称收集到一个数组中。然后只需调用 Worksheets(sheetsToDeteleArrayHere).delete 即可立即删除数组中的所有工作表。 HTH
注意:使用 Trim(sheet-name) 可确保前导和/或结尾空格不属于比较的一部分。)
Sub delete()
Dim sheet
Dim sheetsToDetele
Application.DisplayAlerts = False
For Each sheet In Application.Worksheets
If Trim(sheet.name) = "Close Price" Then GoTo continue
If Trim(sheet.name) = "Parameters" Then GoTo continue
If Trim(sheet.name) = "Stock" Then GoTo continue
If IsArray(sheetsToDetele) Then
ReDim Preserve sheetsToDetele(1 To UBound(sheetsToDetele) + 1)
Else
ReDim sheetsToDetele(1 To 1)
End If
sheetsToDetele(UBound(sheetsToDetele)) = sheet.name
continue:
Next sheet
If Not IsArray(sheetsToDetele) Then _
Exit Sub
Application.Worksheets(sheetsToDetele).delete
Application.DisplayAlerts = True
End Sub
关于excel - Excel 的 if 语句中的三个与 (&),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27721683/