簡體   English   中英

Excel VBA; 嘗試將數據從工作簿中的一個工作表復制到同一工作簿中的另一工作表時,運行時錯誤'438'

[英]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")

您應該能夠在代碼的更下方重復進行方法上的更改。

請閱讀如何避免在Excel VBA中使用“選擇”

暫無
暫無

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

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