Excel For循环的上下界
我有一个关于使用上下限的For循环的问题。宏的目标是从多个工作表复制数据并粘贴到另一个工作簿中。 用户在单元格B3中键入下界,在单元格C3中键入上界。 如果B3=4和C3=6我希望代码在表中循环:4、5、6。 图纸仅以数字命名。“4”标记为“4”而不是“Sheet4” 这就是我被卡住的地方。 如果我在下面的行中定义LB&UB with array命令,那么在运行he FOR循环时没有问题Excel For循环的上下界,excel,for-loop,lower-bound,upperbound,Excel,For Loop,Lower Bound,Upperbound,我有一个关于使用上下限的For循环的问题。宏的目标是从多个工作表复制数据并粘贴到另一个工作簿中。 用户在单元格B3中键入下界,在单元格C3中键入上界。 如果B3=4和C3=6我希望代码在表中循环:4、5、6。 图纸仅以数字命名。“4”标记为“4”而不是“Sheet4” 这就是我被卡住的地方。 如果我在下面的行中定义LB&UB with array命令,那么在运行he FOR循环时没有问题 sheetlist=数组(“4”、“5”、“6”) 但是,如果我尝试使用下面代码中的lo&hi。宏将跳到图形
sheetlist=数组(“4”、“5”、“6”)
但是,如果我尝试使用下面代码中的lo&hi。宏将跳到图形中的最后一张图纸
“卡车日志东门一月.xlsx”
无论图纸名称如何。
这就像工作表(sheetlist(X))。激活不会中断下限和上限,而只是跳到最后一张工作表
Sub Refresh()
Dim lo As Long: lo = ActiveSheet.Range("B3")
Dim hi As Long: hi = ActiveSheet.Range("C3")
Dim sheetlist: sheetlist = Application.Transpose(Evaluate("row(" & lo & ":" & hi & ")"))
Debug.Print "~~> " & Join(sheetlist, ","), _
vbNewLine & "Boundaries: " & LBound(sheetlist) & " To " & UBound(sheetlist)
'Loop Through sheetlist
For X = LBound(sheetlist) To UBound(sheetlist)
Windows("Truck Log-East Gate-January.xlsx").Activate
Worksheets(sheetlist(X)).Activate
Range("A4:R4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("Truck Racks RawData.xlsm").Activate
Sheets("RawDataMacro").Select
Range("A" & Rows.Count).End(xlUp).Select ' starts from the bottom of the worksheet and finds the last cell with data
ActiveCell.Offset(1).Select ' moves cursor down one cell
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next X
您的数组包含数字,因此如果lo=4
和hi=6
,则循环的第一次迭代实际上是:
Worksheets(4).Activate
Worksheets("4").Activate
这将激活左侧的第四张图纸。你想要的是:
Worksheets(4).Activate
Worksheets("4").Activate
因此,您需要:
Worksheets("" & sheetlist(x)).Activate
啊,明白了。就这样,谢谢。