2016-11-11 117 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))。是否有另一个对象具有复制和粘贴功能,但只有一个单元格作为输入参数即可? –

相关问题