For循环下界和上界



我有一个关于使用下界和上界使用For循环的问题。宏的目标是从多个工作表复制数据并粘贴到另一个工作簿。用户将在单元格B3中键入边界作为下界,并将C3作为上界。如果B3 = 4C3 = 6我希望代码循环遍历sheets: 4,5,6.床单只以号码命名。"4";被标记为"4"不是"Sheet4".

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

sheetlist = Array("4", "5", "6")

但是,如果我尝试使用lo &嗨,如下面的代码所示。中的最后一个工作表"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

你的数组包含数字,所以如果lo = 4hi = 6,那么你的循环的第一次迭代是有效的:

Worksheets(4).Activate

激活左边第4页。你想要的是:

Worksheets("4").Activate

所以你需要:

Worksheets("" & sheetlist(x)).Activate

相关内容

  • 没有找到相关文章

最新更新