【问题标题】:Excel 2010: Subscript out of range errorExcel 2010:下标超出范围错误
【发布时间】:2014-06-25 00:00:30
【问题描述】:

我收到的错误是运行时错误“9”:下标超出范围。

Sub Workbook_Open()

'Turn off any alerts that maybe displayed.
Application.DisplayAlerts = False
'Turn of the screen updates
Application.ScreenUpdating = False

'Declare the workbook, create it, save it and close it
Dim wk As Workbook
Set wk = Workbooks.Add
wk.SaveAs Filename:="C:\Saved File\KPI_Grid.xlsm", FileFormat:=52, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
wk.Close

'Open the workbook again. This will get rid of the 'Compatibilty View' and then activate the orginal workbook
Application.Workbooks.Open Filename:="C:\Saved File\KPI_Grid.xlsm"
Workbooks("KPI Grid V5K1 - macro testing.xlsm").Activate
Worksheets("Weekly").Activate
'Select all cells and copy them
Cells.Select
Selection.Copy
'Activate the workbook and sheet that we are going to paste into.
Workbooks("KPI_Grid.xlsm").Activate
Worksheets("Sheet1").Activate   ' ******************ERROR HERE ******************
Cells.Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
    , SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
'Activate the previous workbook again.
Workbooks("KPI Grid V5k1 - macro testing.xlsm").Activate
Worksheets("Monthly").Activate
Cells.Select
Cells.Copy
Workbooks("KPI_Grid.xlsm").Activate
Worksheets("Sheet2").Activate
Cells.Select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
    , SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

结束子

我认为这是一项相对简单的任务。
目的是创建一个新工作簿,复制两张工作表的值,然后保存并关闭新工作簿。
为什么这段代码会出错?

【问题讨论】:

标签: vba excel excel-2010 subscript


【解决方案1】:

转到此行Worksheets("Sheet1").Activate
F9
F5
检查屏幕 - 工作簿“KPI_Grid.xlsm”是否已激活?
它实际上有一个名为“Sheet1”的工作表吗?

如果 Sheet1 与代码不在同一个工作簿中,那么这自然会出错 - 您需要确保所有内容都合格,如下所示:

ActiveWorkbook.Worksheet("Sheet1").Activate

【讨论】:

  • 您好Whytheq,我点击了上面的操作,它抛出了一个运行时错误 1004。我在网上快速搜索了一下,它说这可能是因为我的代码在 ThisWorkbook 中。这可能是我的问题的途径吗?我还尝试对上面的行执行上述操作,它也抛出了同样的错误。问候,
  • @DJenkins - 而不是 F5 尝试使用 F8 逐步完成 - 它首先在哪一行出现错误?
  • ....等一下 - 如果 Sheet1 与代码不在同一个工作簿中,那么它当然会出错!
  • ActiveWorkbook.Worksheet("Sheet1").Activate 效果很好。我认为 Workbooks("KPI_Grid.xlsm").Activate 之前的那一行是这样做的。嗯,想想是时候买一本 VBA 书好好阅读,而不是从网上拼凑起来!非常感谢您的帮助。
猜你喜欢
  • 2014-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-27
  • 1970-01-01
  • 1970-01-01
  • 2015-03-02
  • 1970-01-01
相关资源
最近更新 更多