0

我正在尝试基于变量引用工作表。

从顶层看,我有一个由变量 Num = 1 To 18 驱动的 For 循环。变量“CurrentSN”根据工作表上的序列号列表(“SN's”)更改值。

Dim Num As Integer 
Dim CurrentSN As String

CurrentSN = Sheets("SN's").Cells(Num, 1).Value

工作簿中有 18 个预先存在的工作表,每个工作表都以这些序列号之一命名(总共 18 个)。我想为每个循环参考相应的工作表,所以我使用了......

Sheets(CurrentSN).Range("A1").Select

不幸的是,它在这条线上出错了。我在哪里错了?

4

2 回答 2

4

问题是像集合这样的Sheets集合接受两种不同类型的输入:

  1. 名称/键
  2. 索引号

在您的情况下,您需要密钥(序列号),但 VBA 尝试检索索引号,因为提供的是数字而不是字符串。因此,您需要使用Sheets(CStr(CurrentSN))!

此外,Ross 指出,您需要先激活该表,然后再选择其中的任何内容。尽管在 99.999% 的情况下,您根本不需要使用.Select(因此.Activate) - 请参阅http://www.cpearson.com/excel/optimize.htm

于 2013-04-01T21:21:37.980 回答
2

您必须先激活工作表,然后才能在其上选择某些内容。使用
Sheets(CurrentSN).Activate

Sheets(CurrentSN).Range("A1").Select

于 2013-04-01T21:21:11.170 回答