[英]Excel VBA; Run-time error '438' when trying to copy data from one sheet in a work book to another sheet in the same workbook
我正在開發一種工具,該工具可以從一張工作表(名為“數據”)中獲取數據行,然后將其粘貼到另一張工作表(名為“可打印報告”)中。 每行對應一個不同的作業,並將獲得自己的報告。 當我運行代碼時,出現運行時錯誤438。我嘗試了不同的解決方案,但似乎都沒有。 如果有人可以看一下並幫助我弄清楚我的問題出在哪里,將不勝感激。 錯誤發生在第8行。 謝謝!
Sub ExportToReport()
Worksheets("Data").Activate
Dim x As Long, y As Long, z As Long
y = Sheets("Data").Range("A1", Range("A1").End(xlDown)).Rows.Count
For x = 2 To y
Sheets("Data").Cells(x, 4).Select
Selection.Copy
Worksheets("Printable Report").Activate
Sheets("Printable Report").Range("B1").Select
Selection.Paste
Worksheets("Data").Activate
Sheets("Data").Cells(x, 9).Select
Selection.Copy
Worksheets("Printable Report").Activate
Sheets("Printable Report").Range("B2").Select
Selection.Paste
Worksheets("Data").Activate
Sheets("Data").Cells(x, 8).Select
Selection.Copy
Worksheets("Printable Report").Activate
Sheets("Printable Report").Range("B3").Select
Selection.Paste
Worksheets("Data").Activate
Sheets("Data").Cells(x, 10).Select
Selection.Copy
Worksheets("Printable Report").Activate
Sheets("Printable Report").Range("B4").Select
Selection.Paste
Worksheets("Data").Activate
Sheets("Data").Cells(x, 11).Select
Selection.Copy
Worksheets("Printable Report").Activate
Sheets("Printable Report").Range("B5").Select
Selection.Paste
Worksheets("Data").Activate
Sheets("Data").Cells(x, 12).Select
Selection.Copy
Worksheets("Printable Report").Activate
Sheets("Printable Report").Range("B6").Select
Selection.Paste
Worksheets("Data").Activate
Sheets("Data").Cells(x, 29).Select
Selection.Copy
Worksheets("Printable Report").Activate
Sheets("Printable Report").Range("B7").Select
Selection.Paste
Worksheets("Data").Activate
Sheets("Data").Cells(x, 25).Select
Selection.Copy
Worksheets("Printable Report").Activate
Sheets("Printable Report").Range("B8").Select
Selection.Paste
Worksheets("Data").Activate
Sheets("Data").Cells(x, 15).Select
Selection.Copy
Worksheets("Printable Report").Activate
Sheets("Printable Report").Range("B9").Select
Selection.Paste
'Then insert a set number of cells on print report when move to next row on Data
Sheets("Printable Report").Range("A1").EntireRow.Offset(1).Resize(36).Insert Shift:=xlDown
Next x
End Sub
您無需指定錯誤的出處,但可以更改所有代碼塊的結構,如下所示:
Sheets("Data").Cells(x, 4).Select
Selection.Copy
Worksheets("Printable Report").Activate
Sheets("Printable Report").Range("B1").Select
Selection.Paste
對此:
Sheets("Printable Report").Range("B" & x - 1).Value = Sheets("Data").Cells(x,4).Value
並且應該可以正常工作,並且以后更易於閱讀/重構。
改變這個
Worksheets("Data").Activate
Sheets("Data").Cells(x, 9).Select
Selection.Copy
Worksheets("Printable Report").Activate
Sheets("Printable Report").Range("B2").Select
Selection.Paste
...對此,
Worksheets("Data").Cells(x, 9).Copy _
destination:=Worksheets("Printable Report").Range("B2")
您應該能夠在代碼的更下方重復進行方法上的更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.