循环遍历工作簿中的每个工作表

我试图循环通过工作簿中的每个工作表,但它不工作。 我认为这是ActiveWorkbook.Worksheets不识别每个工作表,只运行在活动工作表上。 任何build议将是伟大的! 我相信这是一个基本的修复,但似乎无法弄清楚。 谢谢!

Sub LoopThroughWorksheets() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets If (ws.Name <> "Sheet1") And (ws.Name <> "Sheet2") And (ws.Name <> "Sheet8") And (ws.Name <> "Sheet42") Then With ws 'code 'Sheets("Formula").Select Range("FormulaRow").Copy 'Selection.Copy ActiveSheet.Select ActiveSheet.Range("A1").Select ActiveSheet.Paste Calculate Range("Q1:X1").Select Selection.Copy Range("Q3:X3000").Select Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Calculate Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End With End If Next ws End Sub 

对于With语句,每次需要使用a来引用该对象. 以你想要的方式使用它。 但是,如果我明白你的意思,我认为最简单的解决scheme是添加这行代码:

 ws.Select 

如下:

 For Each ws In ActiveWorkbook.Worksheets If (ws.Name <> "Sheet1") And (ws.Name <> "Sheet2") And (ws.Name <> "Sheet8") And (ws.Name <> "Sheet42") Then ws.Select With ws 'code 'Sheets("Formula").Select Range("FormulaRow").Copy ... 

然后你也应该改变从Range("FormulaRow").Copy改变的东西Range("FormulaRow").Copy.Range("FormulaRow").Copy所以你一定要正确使用With语句。

希望这是有道理的…