复制时出现“运行时间错误9:下标超出范围”

我试图从一个表复制到另一个值,并得到这个错误

“运行时间错误9:下标超出范围”

当我运行下面的代码。

Sub updatemultiple() Workbooks.Open ("C:\Users\akpeko.zigah\Documents\EDC\DESTINATION.xlsm") Range("B2:F2").Copy 'Application.DisplayAlerts = False ActiveWorkbook.Close ActiveSheet.Paste Destination:=Worksheets(“Sheet1”).Range("B2:F2") End Sub 

任何帮助? 我卡住了。

你的工作簿/工作表/单元格引用有许多未答复的问题,但是如果你粘贴到与包含代码的工作簿相同的工作簿中,那么应该这样工作。

 Sub updatemultiple() Workbooks.Open ("C:\Users\akpeko.zigah\Documents\EDC\DESTINATION.xlsm") Range("B2:F2").Copy Destination:=THISWORKBOOK.Worksheets(“Sheet1”).Range("B2") 'Application.DisplayAlerts = False ActiveWorkbook.Close False End Sub 

问题从您如何在打开外部工作簿时确定当前活动的工作表开始。 如果它被打开,活动工作表改变,然后closures另一个人或过程,然后当你打开它将复制错误的单元格。 如果目标工作表不包含在包含代码的工作簿中,则目标是一个模棱两可的引用,取决于应用程序环境的当前状态。

对代码进行简短的重写(引入了一些构成的引用)可能如下所示。

 Sub updatemultiple() Dim wb As Workbook Set wb = Workbooks.Open("C:\Users\akpeko.zigah\Documents\EDC\DESTINATION.xlsm", ReadOnly:=True) With wb.Worksheets("Sheet1") .Range("B2:F2").Copy Destination:=ThisWorkbook.Worksheets(“Sheet1”).Range("B2:F2") .Close SaveChanges:=False End With Set wb = Nothing End Sub 

简而言之,通过为每个操作的每一边定义工作簿,工作表和单元格引用,就可以尽可能的明确。 依靠“什么是主动”只能导致麻烦。

如果我正确理解你的代码,在我看来,你有一个文件中的代码。 当您执行代码时,它将打开DESTINATION.xlsm文件,复制单元格,closuresDESTINATION.xlsm文件,然后将数据粘贴到包含代码的原始文件的活动工作表中。

我不知道你要复制什么数据,但是当你从Excel文件中复制(手动,而不是代码)大量的数据,然后closures它时,你会得到一个警告:

剪贴板上有大量的信息。 你是否希望能够将这些信息粘贴到其他程序中?

出于这个原因,我build议你先粘贴复制的单元格,然后closures正在复制的文件。