繁体   English   中英

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

[英]“Run Time error 9 : subscript out of range” when copying

我正在尝试将值从一张纸复制到另一张纸并出现此错误

“运行时错误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

问题从打开外部工作簿时如何确定当前活动的工作表开始。 如果已打开,则活动工作表将更改,然后由另一个人或进程关闭,然后在您打开它时将复制错误的单元格。 如果目标工作表未包含在包含代码的工作簿中,则目标是一个模糊的引用,具体取决于应用程序环境的当前状态。

简短重写代码(并添加一些虚构引用)可能类似于以下内容。

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文件,复制单元格,关闭DESTINATION.xlsm文件,然后将数据粘贴到包含代码的原始文件的活动表中。

我不知道您要复制什么数据,但是当您从excel文件中复制(通常不是在代码中)很多数据然后关闭它时,会收到警告:

剪贴板上有大量信息。 您是否希望以后可以将此信息粘贴到另一个程序?

因此,建议您先粘贴复制的单元格,然后关闭要复制的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM