循环在单张纸上工作正常,无法在工作簿中循环。

我有一个工作簿几张,我试图检测C9:C200中的数字,并将它们复制到一个单元格三列以上 – 每个表格从7日开始。 最外层的forloop中的代码在单张纸上工作正常,但是当我尝试通过其余纸张循环时,出现错误消息。 我想我有两个问题:

  1. 我不确定如何在工作簿中循环显示c9:c200范围内的工作表

  2. 我想我需要告诉VBA重置评估,以便从头开始下一张表。

我用这个方向正确吗?

谢谢!

Sub MoveQtrLoop()

Dim CEL As Range Dim RNG As Range Dim I As Integer Dim WrkSht As Worksheet Dim WS_Count As Integer I = 0 WS_Count = ActiveWorkbook.Worksheets.Count For Each WrkSht In ActiveWorkbook.Worksheets I = I + 1 If 6 < I < WS_Count Then Set RNG = ActiveSheet.Range("c9:C200") For Each CEL In RNG If CEL.HasFormula = True Then CEL.Offset(, 3) = CEL.Value ElseIf IsNumeric(CEL) = True Then CEL.Offset(, 3) = CEL.Value Else End If ****ERR. OCCURS HERE**** Next CEL Else End If Next WrkSht 

结束小组

当你声明你的范围时,你是在ActiveSheet的基础上做的,但是你没有通过每个循环激活下面的表格。 但是,而不是使用ActiveSheet只需使用您的WrkShtvariables设置目标范围:

 Set RNG = WrkSht.Range("c9:C200") 

希望这可以解决您的问题。

这不是循环,因为你正在使用ActiveSheet的范围。 将其更改为:

 Dim CEL As Range Dim RNG As Range Dim I As Integer Dim WrkSht As Worksheet Dim WS_Count As Integer I = 0 WS_Count = ActiveWorkbook.Worksheets.Count For Each WrkSht In ActiveWorkbook.Worksheets I = I + 1 If 6 < I < WS_Count Then Set RNG = wrksht.Range("c9:C200") For Each CEL In RNG If CEL.HasFormula = True Then CEL.Offset(, 3) = CEL.Value ElseIf IsNumeric(CEL) = True Then CEL.Offset(, 3) = CEL.Value Else End If Next CEL Else End If Next WrkSht End Sub