【发布时间】:2017-03-27 14:09:02
【问题描述】:
奇怪的问题: 我从带有循环的表格中读取了一些值并将它们粘贴到另一张表格中。
我有一个控制模块,它一个接一个地调用另一个模块。
我的问题:如果我通过控制模块进行调用,我会遇到运行时错误 1004。
当我手动启动宏时没问题,一切正常..
这是我的代码:
[...]
rngname = 3
temp = 1
Do Until Cells(lngRow, 1).Value = "test"
lngLastRowOfSection = Cells(lngRow, 1).End(xlDown).Row
Set slcFind = Range(Cells(lngRow, 1), Cells(lngLastRowOfSection, 1))
slcFind.Copy
Set targetRange = Worksheets("Node Canister VPD").Cells(1, 1)
targetRange.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
lngRow = Cells(lngLastRowOfSection, 1).End(xlDown).Row
If lngRow >= Rows.Count Then Exit Do
Loop
lngRow = 1
rngname = 3
i = 2
Do Until Cells(lngRow, 1).Value = "test"
lngLastRowOfSection = Cells(lngRow, 1).End(xlDown).Row
Set slcFind = Range(Cells(lngRow, 2), Cells(lngLastRowOfSection, 2))
slcFind.Copy
Set targetRange = Worksheets("Node Canister VPD").Cells(i, 1)
targetRange.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
lngRow = Cells(lngLastRowOfSection, 1).End(xlDown).Row
If lngRow >= Rows.Count Then Exit Do
i = i + 1
Loop
[...]
有人知道吗? 这部分代码标注:
targetRange.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
最好的问候, 卡兰
【问题讨论】:
-
明确地将您的对象定义为它们的父对象。例如,
Cells(lngRow, 1)未绑定到任何特定工作表。所以定义到特定的工作表。Worksheets(1).Cells(lngRow,1)...例如。 -
感谢您的提示。但它没有解决我的问题。我不明白...手动启动:没问题。自动启动:运行时错误 1004...
-
在这么快将其作为解决方案驳回之前,请完全实施它,看看它是否有效。当您不向父母明确声明对象时,代码可能会以看似非常有趣的方式表现。具体来说,它将作用于在代码行运行时恰好处于活动状态的任何工作表,这可能不是您怀疑的工作表。有时问题并不在你认为的地方。
-
我和斯科特一起做这个。剔除乍一看似乎很明显的问题。可以肯定的是,他或我会首先努力重构您的 VBA,使其在运行代码之前尽可能明确地说明哪个对象接触了哪个工作表/单元格。
-
我实现了它....但是错了..我是 vba 脚本的新手。但我能够学习:)
标签: vba excel loops copy-paste