Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel For循环的上下界_Excel_For Loop_Lower Bound_Upperbound - Fatal编程技术网

Excel 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。宏将跳到图形

我有一个关于使用上下限的For循环的问题。宏的目标是从多个工作表复制数据并粘贴到另一个工作簿中。 用户在单元格B3中键入下界,在单元格C3中键入上界。 如果B3=4C3=6我希望代码在表中循环:4、5、6。 图纸仅以数字命名。“4”标记为“4”而不是“Sheet4”

这就是我被卡住的地方。 如果我在下面的行中定义LB&UB with array命令,那么在运行he FOR循环时没有问题

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

啊,明白了。就这样,谢谢。