我正在尝试循环浏览一系列Excel标签(Labeled 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是否有标签索引我可以参考那将是很好的。我查看了Microsoft网站(https://msdn.microsoft.com/en-us/library/office/aa221564(v=office.11).aspx),但我需要的是能够移动到下一个标签(ws.name + 1),因为我不知道该怎么做。为新手问题道歉 - 我还在熟悉VBA。
答案 0 :(得分:2)
是的,您可以通过索引号引用工作表。
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
答案 1 :(得分:0)
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)
注意,用户也可以重命名工作表,因此这也存在风险