我正在尝试遍历工作簿中的每个工作表,但它无法正常工作。我认为这是ActiveWorkbook.Worksheets无法识别每个工作表,只能在Active工作表上运行。任何建议都会很棒!我确信这是一个基本的修复,但似乎无法弄明白。谢谢!
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
答案 0 :(得分:1)
对于With
语句,您需要在每次希望使用.
引用该对象时继续,以便按照您的意图使用它。
但是,如果我了解你的内心,我认为最简单的解决方案是添加这行代码:
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
之类的内容,以便您确保正确使用With
语句。
希望有道理......