工作表名称中的数字为“任意数字”

我有这个代码:

Set wb2 = ActiveWorkbook wb2.Worksheets("-Incumbents").Range("B2:C2", Range("B2:C2").End(xlDown)).RemoveDuplicates Columns:=Array(1, 2), Header _ :=xlYes wb2.Worksheets("-Incumbents").Range("B2:C2", Range("B2:C2").End(xlDown)).Select Selection.Copy 

我希望它在任何名称中包含单词“-Incumbents”的工作表上工作。 问题是,工作表被命名为“1-inumbents”,“2-incumbents”,“3-incumbents”等等…所以我想我需要一些variables来代码,而不是实际的数字,但我无法弄清楚如何做到这一点。 请帮忙。

尝试这样的事情:

 Dim ws as Worksheet Dim wb2 as Workbook Set wb2 = ActiveWorkbook For Each ws in wb2.worksheets If ws.Name Like "*-Incumbents" Then wb2.Worksheets("-Incumbents").Range("B2:C2", Range("B2:C2").End _ (xlDown)).RemoveDuplicates Columns:=Array(1, 2), Header _ :=xlYes wb2.Worksheets("-Incumbents").Range("B2:C2", Range("B2:C2").End _ (xlDown)).Select Selection.Copy End If Next 

正如斯科特·克莱纳(Scott Craner)所说,首先,通过所有的床单进行循环。 其次,将sheet.name与“Incumbents”进行比较,您可以使用“ Like ”或“ InStr ”函数:

 Dim wb2 As Workbook Dim sht As Worksheet Set wb2 = ActiveWorkbook For Each sht In wb2.Sheets ' option 1: use Like If sht.Name Like "Incumbents" Then ' option 2: use Instr ' If InStr(1, sht.Name, "Incumbents") > 0 Then sht.Range("B2:C2", sht.Range("B2:C2").End(xlDown)).RemoveDuplicates Columns:=Array(1, 2), Header _ :=xlYes sht.Range("B2:C2", sht.Range("B2:C2").End(xlDown)).Copy End If Next sht