Excel工作表循环命令不工作
代码不会在表单中的其他选项卡之间循环 工作簿“XYZSheet.xlsx”,我似乎不明白为什么。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.
中间的代码从“范围(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