【发布时间】:2016-02-29 14:07:54
【问题描述】:
所以我有这个代码:
Sub CopyItems()
Dim Source As String
Dim Target As String
'Dim SourceSheet As String
'Dim TargetSheet As String
Source = "Source.xlsm"
Target = "needChange.xlsm"
'SourceSheet = "Sprint backlog"
'TargetSheet = "Sheet1"
Workbooks(Source).Sheets("Sprint backlog").Range("B6:B15").Copy
Workbooks(Target).Sheets("Sheet1").Range("A14:A23").Paste '<-ERROR here
End Sub
它给了我标题中表达的运行时错误“9”。代码非常简单,我完全被难住了。 我在网上阅读,似乎是因为名称不存在,但是工作表和工作簿都存在,名称相同。任何代码之间都没有空格或奇怪的字符。
基本上我想将 Source.xlsm 中的“Sprint backlog”工作表中从 B6 到 B15 的列复制到 needChange.xlsm 的 Sheet1 中的 A14 到 A23 范围
我试过了,没有任何运气:
Workbooks(Source).Sheets("Sprint backlog").Range("B6:B15").Copy _
Workbooks(Target).Sheets("Sheet1").Range("A14:A23").PasteSpecial
并且还用现在注释掉的内容修改了代码。
我怀疑宏无法访问目标文件 (needChange.xlsm),因为它找不到或无法访问它并因此返回问题,但我不知道如何用代码修复它。 .
如果有帮助,则在运行宏时,此代码中的两个工作簿对我来说都是打开且可访问的。
我正在向你寻求帮助。
非常感谢。 最好的问候。
【问题讨论】:
-
要么工作簿不名为“needChange.xlsm”,工作表不名为“Sheet1”,要么您在 Change 事件中运行了一些其他代码,但其中有错误。
-
fwiw,只需使用目的地左上角的单元格作为目标范围。
.Range("A14")将根据源的大小和形状进行调整;你不需要.Range("A14:A23")。 -
要查明错误,您可以使用中间对象和/或在调试时使用即时窗口。比如
Dim wb As Workbook, Set wb = Workbooks(Target), Dim sh As Worksheet, Set sh = wb.Sheets("Sheet1")等。 -
Rory - img 我检查了三次,工作表名称相同:( Jeeped - 谢谢,请记住这一点。dev1998 - 我看到了,事情是......当这段代码是最终的并且将要使用的路径可能不一样。
标签: excel excel-2013 vba