Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vba Excel粘贴值:自动:错误1004手动:确定_Vba_Excel_Loops_Copy Paste - Fatal编程技术网

vba Excel粘贴值:自动:错误1004手动:确定

vba Excel粘贴值:自动:错误1004手动:确定,vba,excel,loops,copy-paste,Vba,Excel,Loops,Copy Paste,奇怪的问题: 我从带有循环的工作表中读取一些值,然后将它们粘贴到另一个工作表中 我有一个控制模块,它一个接一个地调用一个模块 我的问题:如果我通过控制模块进行呼叫,我会遇到运行时错误1004 当我手动启动宏时,一切正常 这是我的代码: [...] rngname = 3 temp = 1 Do Until Cells(lngRow, 1).Value = "test" lngLastRowOfSection = Cells(lngRow, 1).End(

奇怪的问题: 我从带有循环的工作表中读取一些值,然后将它们粘贴到另一个工作表中

我有一个控制模块,它一个接一个地调用一个模块

我的问题:如果我通过控制模块进行呼叫,我会遇到运行时错误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
致以最良好的祝愿,
Kalain

Scott Holtzman是正确的,请在设置范围时定义工作表。我可以用一张带有有效数据的表、一张要粘贴的表和另一张完全空白的表来重新创建这个bug。当我从有效的表中运行宏时,它是很好的,当我运行它时,空白页被激活,它试图将空白列转置为行。Excel工作表的列数多于行数,因此它会崩溃,因为它无法适应

尝试使用这个方法,将“First”更改为源代码表的任何名称

Sub test()

Dim Other As New Worksheet
Set Other = Worksheets("First")
lngrow = 1
rngname = 3
    temp = 1
    Do Until other.Cells(lngrow, 1).Value = "test"

        lngLastRowOfSection = Other.Cells(lngrow, 1).End(xlDown).Row

        Set slcFind = Range(Other.Cells(lngrow, 1), Other.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 = Other.Cells(lngLastRowOfSection, 1).End(xlDown).Row
        If lngrow >= Rows.Count Then Exit Do

    Loop

    lngrow = 1

    rngname = 3
    i = 2
    Do Until Other.Cells(lngrow, 1).Value = "test"

        lngLastRowOfSection = Other.Cells(lngrow, 1).End(xlDown).Row

        Set slcFind = Range(Other.Cells(lngrow, 2), Other.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 = Other.Cells(lngLastRowOfSection, 1).End(xlDown).Row
        If lngrow >= Rows.Count Then Exit Do
    i = i + 1
    Loop

End Sub

将对象显式定义到其父对象。例如,
单元格(lngRow,1)
未绑定到任何特定的表。因此,请定义特定的工作表<代码>工作表(1)。单元格(lngRow,1)。。。例如,谢谢你的提示。但这并不能解决我的问题。我不明白…手动启动:没问题。自动启动:运行时错误1004…在将其作为解决方案快速排除之前,请完全实现它并查看它是否有效。当您没有显式地向父对象声明对象时,代码的行为可能看起来非常有趣。具体地说,它将作用于在代码行运行时恰好处于活动状态的任何工作表,这可能不是您所怀疑的工作表。有时候问题不在于你认为它在哪里。我在这一点上和斯科特是一致的。剔除乍一看似乎显而易见的问题。相当肯定的是,他或我会在运行代码之前,首先将你的VBA重构为尽可能明确的,关于哪个对象接触哪个表/单元格。我实现了它……但错了……我是VBA脚本的新手。但我能学会:)像个魔术师一样工作!我在错误的地方使用了工作表的定义真可耻。。