excel - 如果单元格内容与列表值不匹配,则删除工作表

标签 excel vba

我已经在这里潜伏了几个月,学习 vba 来帮助我的工作自动化一些报告,我终于明白了,我完全被困住了,无法在网上找到答案。

我有一个自动生成的报告,该报告为公司中的每个人都有一张单独的表格
这每周不会有一个静态文件名,所以我想我需要类似的东西:

Dim thiswb as string
thiswb = activeworkbook.name

我想做的是,对于thiswb中的每张工作表,除非C4中单元格中的名称与我保存在另一个工作簿中的列表中的名称匹配(这有一个不会更改“工作报告”的静态名称),工作表被删除。所以最后我留下了一个工作簿,我的列表中的每个名字都有单独的工作表。

任何帮助,将不胜感激。如果您需要更多信息,请告诉我。

最佳答案

在使用此代码之前,将您的名单从“工作报告”复制到同一个工作表中。然后,此宏循环遍历工作簿中的每个工作表,并使用 FIND确定名称是否出现在名为“staffnames”的选项卡上的任何位置。

Dim focus_SHEET As Worksheet
Dim Rng As Range
For Each focus_SHEET In Sheets
    focus_SHEET.Select
    Set Rng = Sheets("staffnames").Cells.Find(Range("C4"), LookIn:=xlValues)

    If focus_SHEET.Name = "staffnames" Then
        'skip over the staff list
        'do nothing
        MsgBox ("skip " & focus_SHEET.Name)
    ElseIf Not Rng Is Nothing Then
        'found name on the list
        'do nothing
        MsgBox ("found " & Range("C4"))
    Else:
        'did not find name on the list
        MsgBox ("unrecognized name: " & Range("C4"))

        'delete the tab
        Application.DisplayAlerts = False
        focus_SHEET.Delete
        Application.DisplayAlerts = True
    End If
Next focus_SHEET
Set focus_SHEET = Nothing
Set Rng = Nothing

End Sub

您还可以添加更多功能,这些功能将自动打开员工姓名的来源。但这应该让你朝着正确的方向前进。

关于excel - 如果单元格内容与列表值不匹配,则删除工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23343570/

相关文章:

excel - 使用 Powershell 将 CSV 数据插入 Excel 中下一个可用的相应单元格

vba - Excel 将多余的逗号导出到 CSV

vba - Excel VBA : AutoFill Multiple Cells with Formulas

excel - VBA-运行时错误9并使用*作为变量工作表名称

vba - Excel VBA - 根据值比较工作表行

vba - Excel VLookup "Object Required"错误

vba - 为什么我在将数组分配给范围时遇到问题

VBA - Excel 有时无法正确关闭

c# - 如何使用 C# 在 Excel 中查找并替换单词/短语

excel - 如何删除另一个 Excel 文件的第一行