我已经在这里潜伏了几个月,学习 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/