问:在具有索引的Excel选项卡之间移动

我试图通过一系列Excel选项卡(标记为Wk 1到Wk 52)循环,并提取存储在第1周(K40)中的余额值,并将此值转移到第2周(D10)。 (第3周将与第2周等进行比较)请参阅附件图像。 做excel标签有索引,你可以参考? 原因是我的伪代码如下:

For ws in Worksheets 'Cycle through all worksheets IF RIGHT(ws.name, 2) < RIGHT(ws.name + 1,2) THEN 'As the worksheets are labelled Wk 1 Wk 2 etc. RIGHT 2 will only take the number values, not Wk Select ws.name tmpVar = Range("K40") Select ws.name + 1 D10.Value = tmpVar END IF Next ws 

如果任何人都可以让我知道,如果Excel的选项卡索引我可以指出,这将是伟大的。 我浏览了微软网站( https://msdn.microsoft.com/en-us/library/office/aa221564(v=office.11​​).aspx ),但我需要的是能够移动到下一个标签(ws.name + 1),因为这是我不知道如何得到。 对新手问题抱歉 – 我仍然熟悉VBA。

资产负债表样本

是的,您可以通过其索引号引用工作表。

 dim w as long for w = 1 to worksheets.count - 1 with worksheets(w) If IsNumeric(Right(.Name, 2)) And IsNumeric(Right(Worksheets(w + 1).Name, 2)) Then if CLng(right(.name, 2)) = CLng(right(worksheets(w + 1).name, 2)) - 1 then worksheets(w + 1).cells(10, 4) = .cells(40, 11).value2 end if end if end with next w 

Worksheets集合具有索引属性,您可以通过此索引来引用工作表(如Jeeped所示)

但是,工作表的索引是Excel中显示的当前位置(从左数起,包括计数隐藏工作表)。 这个位置可以由用户改变,所以在这种情况下使用是有风险的。

更好地让你的ws.name + 1实际上工作

例如

 Dim ThisWeekNum as long Dim wsThisWeek as Worksheet Dim wsNextWeek as Worksheet ThisWeekNum = 1 Set wsThisWeek = Worksheets("Wk " & ThisWeekNum) Set wsNextWeek = Worksheets("Wk " & Val(Right$(wsThisWeek.Name, 2)) + 1) 

请注意,用户也可以重命名工作表,所以这也有其风险