循环在单张纸上工作正常,无法在工作簿中循环。
我有一个工作簿几张,我试图检测C9:C200中的数字,并将它们复制到一个单元格三列以上 – 每个表格从7日开始。 最外层的forloop中的代码在单张纸上工作正常,但是当我尝试通过其余纸张循环时,出现错误消息。 我想我有两个问题:
-
我不确定如何在工作簿中循环显示c9:c200范围内的工作表
-
我想我需要告诉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