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

时间:2014-04-28 14:19:19

标签: excel-vba vba excel

我已经潜伏在这里好几个月学习vba以帮助自动化一些报告来完成我的工作而且我终于到了一个地步我们已经完全陷入困境而无法找到在线回答。

我有一个自动生成的报告,其中包含公司中每个人的单独表格 这个每周都没有静态文件名,所以我觉得我需要这样的东西:

Dim thiswb as string
thiswb = activeworkbook.name

我想要做的是,对于thiswb中的每个工作表,除非C4 on中的单元格中的名称与我在另一个工作簿中保存的列表上的名称匹配(这个名称不具有静态名称)更改"工作报告"),工作表将被删除。因此,最后我留下了一个工作簿,列表中的每个名称都有单独的工作表。

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

2 个答案:

答案 0 :(得分:0)

Excel clear cells based on contents of a list in another sheet

我相信这应该可以帮到你。总是值得在网上寻找答案,因为有人可能已经尝试过你正在尝试做的事情:)

7的

答案 1 :(得分:0)

在使用此代码之前,请从"职位报告"中复制您的名单。进入同一个工作表。然后,此宏循环遍历工作簿中的每个工作表,并使用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

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