【问题标题】:Method 'Range' of object '_Global' Failed error 1004 [duplicate]对象'_Global'的方法'范围'失败错误1004 [重复]
【发布时间】:2017-03-26 04:27:51
【问题描述】:

我查看了这个问题的几个解决方案,并尝试了其中一些,包括前缀句点“。”到关键字单元格但不起作用

下面是我的子

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

【问题讨论】:

  • “给句点加前缀”不会神奇地起作用。 VBA(和许多其他语言)中的句点用于访问某个对象的成员。回到你看到的“给句点加前缀”的解决方案,你会注意到上面几行有一个 With 块 - 句点不是突然出现的,它实际上是访问由 @ 指定的对象987654323@声明。

标签: vba excel


【解决方案1】:

默认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 

类似的事情也适用于以下行。

最好使用Long 而不是Integer 以避免可能的溢出问题。

【讨论】:

  • 我在两个错误之间来回切换,
  • 谢谢这个答案有效,我发现我为 paste 编写的代码不再被接受 pastespecial paste:=xlpastevalues 不起作用我使用 PasteSpecial xlPasteValues
  • Range 对象至少需要两个单元格,即 range(.cells(1,2),.cells(3,4)) 。是否有另一个对象具有复制和粘贴等功能,但只需一个单元格作为输入参数就可以了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多