簡體   English   中英

vba Excel粘貼值:自動:錯誤1004手動:確定

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

奇怪的問題:我循環讀取工作表中的一些值並將其粘貼到另一工作表中。

我有一個控制模塊,它在另一個模塊之后調用一個模塊。

我的問題:如果我通過控制模塊執行呼叫,則會遇到運行時錯誤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

最好的問候,卡蘭

Scott Holtzman是正確的,請在設置范圍時定義工作表。 我可以通過創建一張包含有效數據的表,要粘貼的表和另一張完全空白的表來重新創建該錯誤。 當我從有效工作表中運行宏時,這很好,當我在激活空白工作表的情況下運行它時,它將嘗試將空白列轉置為一行。 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM