【发布时间】:2016-12-02 21:19:15
【问题描述】:
我在运行以下代码时收到错误“下标超出范围”; debug 将我指向最后一行:
Dim SrcBook As Workbook
Dim TrgBook As Workbook
Dim SrcSheet As Worksheet
Dim TrgSheet As Worksheet
Dim Sheet_Name As String
Workbooks.Open (CalendarFile)
Sheet_Name = MonthName(Month(SrcSheet.Cells(SrcRow, "D").Value), False)
MsgBox ("Sheet_Name Value is: " & Sheet_Name)
Set TrgSheet = Workbooks(CalendarFile).Worksheets(Sheet_Name)
我已经反复验证 CalendarFile 是一个有效的文件名(我使用完整路径文件名)。 Sheet_Name 也是该工作簿中工作表的有效名称。如果我尝试通过数字索引访问工作表 [即 Workbooks(CalendarFile).Worksheets(11) vs Workbooks(CalendarFile).Worksheets(November)],我会收到类似的错误。 MsgBox 调用验证我为 WorkSheets() 方法提供了正确的工作表名称。
最后,正确定义了 ScrRow - 我可以使用此代码在同一 WorkBook 中操作目标 WorkSheets,因为在玩具/测试应用程序中调用宏,但由于某种原因,当我尝试操作目标时它失败了其他(打开的)工作簿中的工作表。
任何帮助将不胜感激!谢谢!
【问题讨论】:
-
Sheet_Name 应该是
Range而不是字符串。 -
@Niclas 为什么它是一个范围? MonthName 返回一个字符串。