使用数组来更改数据,而不用硬编码成表单标题

我有一个vbamacros(2010年),当点击一个button时,新的一年被填写,标签名称的年份和数据中的所有年份更新以匹配新的一年。 由于我是新手,我已经将所有这些硬编码到每张表的特定标题上。 这意味着该button仅在给出下标超出范围错误之前仅工作一次,因为该工作表已经改变了标题。

有没有一种方法可以使用数组或其他东西来避免对标题进行硬编码,但仍然在标题中改变年份,以便将来可以重用这些代码?

我有:

For Each xlwksht In ActiveWorkbook.Worksheets( _ Array("FY15 GM Forecast (AMSG) Total", "FY15 GM Forecast (US)", _ "FY15 GM Forecast (MCU)", "FY15 GM Forecast (PDSN)")) xlwksht.Activate ::do something here:: Next xlwksht 

当我运行这个来看看我是否在正确的轨道上,我得到一个运行时错误'91'-对象variables或未设置块 。 我不确定如何设置variables,如果我需要一个计数。 我所尝试的还没有奏效。

谢谢。

使用工作表(索引)属性

 Sub Test() Dim xlwksht As Worksheet For Each xlwksht In ActiveWorkbook.Worksheets(Array(1, 2, 3)) xlwksht.Activate MsgBox ("Index:" & xlwksht.Index & vbCrLf & "Name: " & xlwksht.Name) Next xlwksht End Sub 

使用CodeName不会改变 – 它是工作表类的只读属性 – 不像索引位置可以改变,如果你重新组织表,删除一些等)

 Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets(Array(Sheet1.Name, Sheet2.Name)) Debug.Print ws.Name ws.Activate 'etc. Next 

如果从工作簿中删除了一个或多个工作表,这当然会产生错误,但是无论您如何处理他们的姓名或工作簿中的相对位置,这都会起作用。