【发布时间】:2017-08-23 16:25:28
【问题描述】:
我正在尝试处理名称为变量的工作表。
我有一个名为“数据”的主工作表,我可以在其中获取现有工作表的名称列表。
我的代码如下:
Dim data as Worksheet
dim sheet_name as String
Dim i as Integer
Set data = ThisWorkbook.Sheets("Data")
For i = 2 to 10
sheet_name = data.Range("A"&i).Value
With ThisWorkbook.Sheets(sheet_name)
'Operations on the worksheet
End With
Next i
提示的错误是特定行的“运行时错误9:下标超出范围”:
With This Workbook.Sheets(sheet_name)
好像对象 Sheets 不理解字符串 sheet_name。 工作表“sheet_name”确实存在,我仔细检查了。
很遗憾,我无法按其名称调用工作表,因为我有太多工作表要操作,这就是我想做一个循环的原因。
我尝试不使用“With”子句,而只是引用前面带有“ThisWorkbook.Sheets(sheet_name)”的工作表的每个对象,但也不起作用。
你知道是否可以在 Sheets() 中调用字符串变量吗?
非常感谢您的帮助!
亲切的问候,
【问题讨论】:
-
您可以做任何您想做的事 - 看起来没有与
sheet_name的值匹配的工作表。 -
应该是
With sheet_name ... End With? -
您的代码绝对有效提供工作表
Data上的名称列表完全匹配工作表名称(它们不区分大小写)。检查名称开头或结尾的多余空格(data和实际工作表名称)。Data!A2:A10中的任何空白也会导致此错误。