vba - 如果工作表在数组中,请不要删除它

标签 vba excel

Dim L As Double
Dim Workings() As Variant

Workings = Array("Due SO not Billed", "Working Paper", "Ageing Over 14 Days")

On Error Resume Next
Application.DisplayAlerts = False

For L = 1 To Worksheets.Count
    If Worksheets(L).Name <> Workings Then
    Worksheets(L).Delete
    Exit For
    End If
Next L

Application.DisplayAlerts = True
On Error GoTo 0

我试着写上面的代码。目的是我在一个工作簿中有 10 个工作表,但最终输出只需要 3 个工作表,我想删除其余的工作表。我用数组尝试了上面的代码,应该保存我在数组中给出的任何名称,并且应该删除所有其他剩余的工作表。我收到类型不匹配错误。有人可以帮忙吗?

最佳答案

使用Match测试工作表的 Name在数组中:

Dim Workings() As Variant
Dim ws As Worksheet

Workings = Array("Due SO not Billed", "Working Paper", "Ageing Over 14 Days")

Application.DisplayAlerts = False
For Each ws In Worksheets
    If IsError(Application.Match(ws.Name, Workings, False)) Then
        ws.Delete
    End If
Next    
Application.DisplayAlerts = True

关于vba - 如果工作表在数组中,请不要删除它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47746106/

相关文章:

excel - 从 Excel 中的文本单元格中提取 URL

excel - 更改Excel数据验证中的日期格式

Excel:是否存在检测计算模式变化的事件(自动/手动)

excel - 将网页链接添加到 Excel 散点图上的每个数据点或数据标签

excel - 将选定的单元格合并为一个带逗号的单元格

excel - 无法在 VbScript 中复制 Excel 中的大量数据

excel - 如何在 Excel VBA 中偏移索引匹配结果

vba - 连接 DAO Access 时出现错误 429

vba - (VBA)如何从动态创建的复选框中检索选定的复选框数据

excel - 从 Access 中搜索工作簿中的所有 Excel 工作表,并使用 VBA 事件表单中的字符串