简体   繁体   English

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

[英]vba Excel Paste Values: automatic: Error 1004 manual: OK

strange problem: I read some Values from a sheet with a loop and paste them to another sheet. 奇怪的问题:我循环读取工作表中的一些值并将其粘贴到另一工作表中。

I have a Control Module which calls one module after the other one. 我有一个控制模块,它在另一个模块之后调用一个模块。

My Problem: If I do the Call via control Module I run into the runtime error 1004. 我的问题:如果我通过控制模块执行呼叫,则会遇到运行时错误1004。

When I start the macro manually it is no problem and everythin works fine.. 当我手动启动宏时,这没问题,一切正常。

This is my code: 这是我的代码:

    [...]
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

[...]

Has anyone an idea? 有人知道吗? This part of the code is marked: 这部分代码被标记为:

targetRange.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

Best Regards, Kalain 最好的问候,卡兰

Scott Holtzman is correct, define your worksheet when setting ranges. Scott Holtzman是正确的,请在设置范围时定义工作表。 I was able to recreate the bug by having 1 sheet with valid data, the sheet to paste and another entirely blank sheet. 我可以通过创建一张包含有效数据的表,要粘贴的表和另一张完全空白的表来重新创建该错误。 When I ran the macro from the valid sheet, it was fine, when I ran it with the blank sheet activated it tries to transpose a blank column to a row. 当我从有效工作表中运行宏时,这很好,当我在激活空白工作表的情况下运行它时,它将尝试将空白列转置为一行。 Excel sheets have more columns then rows, so it crashes because it can't fit. Excel工作表的列数比行数多,因此会崩溃,因为它不合适。

Try using this, change "First" to whatever your source sheet is called. 尝试使用此功能,将“ 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

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

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