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