复制时出现“运行时间错误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正在复制的文件。