2016-11-11 120 views
0

我研究了這個問題的幾種解決方案,並嘗試了其中的一些方法,包括前綴句點「。」。以關鍵字細胞,但沒有奏效對象'_Global'的方法'範圍'失敗錯誤1004

以下是我的子

Sub GJK() 
Dim port_total_periodic_rows As Worksheet 

Dim Target As Worksheet 
Dim i As Integer 
Dim J As Integer 
Dim DTCPYCTR As Integer 
Dim DTPSTCTR As Integer 
Dim FNDPSTCTR As Integer> 
Dim FNDCPYCTR As Integer 

DTCPYCTR = 5 
FNDCPYCTR = 7 
DTPSTCTR = 2 
FNDPSTCTR = 2 

For i = 1 To 138 
    For J = 1 To 113 
    Sheets("port_total_periodic_rows").Cells(DTCPYCTR, 3).Copy 
    Sheets("Target").Cells(DTPSTCTR, 1).PasteSpecial Paste:=xlPasteValues 
    Sheets("port_total_periodic_rows").Range(Cells(FNDCPYCTR, 2), _ 
               Cells(FNDCPYCTR, 4)).Copy 
    Sheets("Target").Range(Cells(FNDPSTCTR, 2), _ 
       Range(FNDPSTCTR,4)).PasteSpecial Paste:=xlPasteValues 

    FNDPSTCTR = FNDPSTCTR + 1 
    FNDCPYCTRT = FNDCPYCTR + 1 
    DTPSTCTR = DTPSTCTR + 1 

    Next 

    DTCPYCTR = DTCPYCTR + 1 
Next 

End Sub 
+1

「前綴一段時間」不會神奇地工作。 VBA中的句點(以及其他許多語言)用於訪問某個對象的成員。回到你看到的「在一段時間前添加」的解決方案,你會注意到上面有幾行「With」區塊 - 該區間並不是藍色的,它實際上訪問由'用'聲明。 –

回答

3

默認情況下Cells()指ActiveSheet,因此,如果活動表不是「port_total_periodic_rows」這將失敗:

Sheets("port_total_periodic_rows").Range(Cells(FNDCPYCTR, 2), _ 
              Cells(FNDCPYCTR, 4)).Copy 

應該是:

With Sheets("port_total_periodic_rows") 
    .Range(.Cells(FNDCPYCTR, 2), .Cells(FNDCPYCTR, 4)).Copy 
End with 

類似的事情也適用於FO在線。

還更好地使用Long而不是Integer以避免可能的溢出問題。

+0

我在兩個錯誤之間來回切換, –

+0

謝謝你這個答案工作,我發現我已經寫的代碼粘貼不再接受pastespecial粘貼:= xlpastevalues不工作intead我用PasteSpecial xlPasteValues –

+0

範圍對象需要至少兩個細胞即範圍(細胞(1,2),細胞(3,4))。是否有另一個對象具有複製和粘貼功能,但只有一個單元格作爲輸入參數即可? –

相關問題