【发布时间】:2021-02-09 22:29:31
【问题描述】:
我收到了一个关于使用下限和上限使用 For 循环的问题。宏的目标是从多个工作表中复制数据并粘贴到另一个工作簿中。 边界将由用户在单元格 B3 中键入作为下限,C3 作为上限。 如果 B3 = 4 和 C3=6 我希望代码循环遍历 sheets: 4 , 5 , 6。 工作表仅以数字命名。 “4”被标记为“4”而不是“Sheet4”。
这就是我卡住的地方。 如果我在下面的行中用数组命令定义了 LB 和 UB,我在他的 FOR 循环中运行没有问题。
sheetlist = Array("4", "5", "6")
但是,如果我尝试使用以下代码中的 lo 和 hi。宏跳转到最后一张表
"Truck Log-East Gate-January.xlsx" 无论工作表名称如何。
就像Worksheets(sheetlist(X)).Activate 没有中断上下限,而是跳到最后一张。
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
【问题讨论】:
标签: excel for-loop lower-bound upperbound