2016-04-22 62 views
0

美好的一天。将工作簿中的单元格复制到“下标超出范围”的工作簿结果

我正在尝试编写一个代码,它将从“A-M”和(向下)直到最后一次使用的行基本上选择单元格(从左到右)。
然后,一旦选定,我将它们复制到另一个工作簿。

这是我尝试使用代码:

ActiveWorkbook.Worksheets("Sheet1").Range("A1:M" & LastRow).Copy _ 
    Workbooks("Converter.xlsm").Worksheets("Sheet1").Range("A1").CurrentRegion 

一切都在代码别的办法,除了这条线。
而结果是这样的:

Run-time error '9': 

Subscript out of range 

感谢。

PS。我使用的“LastRow”变量,我只是将它从一个教程中拉出来。这不是一个个人用户定义的变量,所以我不确定这是否来自VBA的文档。

+1

尝试带走'.CurrentRegion'为目标单元格 – Rosetta

回答

0

你提到你没有计算LastRow。

  1. 始终将Option Explicit置于模块顶部。它迫使你声明你的变量,并且会帮助你识别你从另一个编码器得到的东西是否是“内置的”。关于确定范围中的最后一行,请参阅this post
  2. 从这个职位,你应该有一个计算,如您的代码行之前,下面...

    LastRow = Sheets("Sheet1").Range("A" & Sheets("Sheet1").Rows.Count).End(xlUp).Row 
    
+0

啊......我明白了。所以,'Option Explicit'将会是一个自动辅助。谢谢。但我必须问,但。什么是'xlUp'? – TheBSITGuy

+0

xlUp是一个常量,内置了Excel的VBA功能。 – OldUgly

+0

非常感谢。 :) – TheBSITGuy

0

请关闭所有的工作簿,然后重新打开,然后用试试下面的代码

Sub test() 
    Dim lastrow As Long 
    lastrow = Range("A" & Rows.Count).End(xlUp).Row 
    ActiveWorkbook.Worksheets("Sheet1").Range("A1:M" & lastrow).Copy Workbooks("Converter.xlsm").Worksheets("Sheet1").Range("A1") 
End Sub 
相关问题