问:在带有索引的

时间:2015-12-11 02:28:45

标签: excel vba excel-vba

我正在尝试循环浏览一系列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。

Balance Sheet Sample

2 个答案:

答案 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)

注意,用户也可以重命名工作表,因此这也存在风险

相关问题