Excel工作表循环命令不工作

Excel工作表循环命令不工作,excel,vba,loops,worksheet,Excel,Vba,Loops,Worksheet,代码不会在表单中的其他选项卡之间循环 工作簿“XYZSheet.xlsx”,我似乎不明白为什么。 中间的代码从“范围(E1)”一直到“ReestFrase::false”都是通过一个记录的会话与次要编辑一起进行的。 除了用F8循环外,我不完全理解VBA代码,所以请对我放松点 谢谢 您需要类似于: Sub forEachWs() Dim Ws As Worksheet Windows("XYZSheet.xlsx").Activate For Each Ws In ActiveWorkbook.

代码不会在表单中的其他选项卡之间循环 工作簿“XYZSheet.xlsx”,我似乎不明白为什么。

中间的代码从“范围(E1)”一直到“ReestFrase::false”都是通过一个记录的会话与次要编辑一起进行的。

除了用F8循环外,我不完全理解VBA代码,所以请对我放松点


谢谢

您需要类似于:

Sub forEachWs()

Dim Ws As Worksheet
Windows("XYZSheet.xlsx").Activate
For Each Ws In ActiveWorkbook.Worksheets
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "=SUM(C[-2])"
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "=(RC[-1]/R1C5)"
    Range("D2").Select
    Selection.Copy
    Range("D2:D2450").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Columns("D:D").Select
    Range("D2").Activate
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Selection.Replace What:="0", Replacement:="", LookAt:=xlWhole, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
 Next Ws 
 End Sub

是在粘贴吗?你的第二行应该在
处分成两行。ActivateFor
,应该是
。Activate
,然后下一行开始
For
。另外,我强烈建议通读一遍,认为For next应该在新行。你没有激活
For
循环中的工作表,因此循环总是在同一工作表上运行。正如@BruceWayne所说,这就是为什么应该避免使用
.Select
Sub forEachWs()

Dim Ws As Worksheet
Windows("XYZSheet.xlsx").Activate
For Each Ws In ActiveWorkbook.Worksheets
    With Ws
        .Range("E1").FormulaR1C1 = "=SUM(C[-2])"
        .Range("D2").FormulaR1C1 = "=(RC[-1]/R1C5)"
        .Range("D2").Copy Destination:=Range("D2:D2450")
        .Columns("D:D").Value = Columns("D:D").Value
        .Columns("D:D").Replace What:="0", Replacement:="", LookAt:=xlWhole, SearchOrder:=xlByRows
    End With
Next Ws
End Sub