【问题标题】:Paste Range Returning Syntax Error For Variable Range粘贴范围返回变量范围的语法错误
【发布时间】:2018-10-24 14:46:44
【问题描述】:

我正在尝试遍历一组列,其中包含大小不同且有大量重复的日期列表。我想从 TSX-DeltaFind 复制列值并将它们粘贴到相应“Ticker”下的 TSX-CleanDate 中,并在完成后删除所有重复项。

A) 为什么粘贴行出现语法错误?
B)粘贴后如何删除所有重复项?

Sub CleanDate()
    Dim BottomRow As Long
    Dim BottomRow2 As Long
    Dim TopRow As Long
    Dim col As Integer
    Dim Ticker As String
    Dim RngY As Range
    Dim originalRng As Integer

    With ThisWorkbook.Worksheets("TSX-DeltaFind")
        col = 4
        TopRow = 6

        For col = 4 To 3 + (2 * 26) Step 2
            Ticker = .Cells(TopRow - 1, col - 2).Value
            BottomRow = .Cells(.Rows.Count, col).End(xlUp).row
            originalRng = BottomRow - TopRow

            Worksheets("TSX-DeltaFind").Range(.Cells(TopRow, col), .Cells(BottomRow, col)).Copy
            Worksheets("TSX-CleanDate").Activate

            With ThisWorkbook.Worksheets("TSX-CleanDate")
                Set RngY = Worksheets("TSX-CleanDate").Range("A3:XDF3").Find(Ticker, lookat:=xlPart)
                BottomRow2 = .Cells(.Rows.Count, RngY.Column).End(xlUp).row

                Worksheets("TSX-CleanDate").Range(BottomRow2 + 1, RngY.Column + 2:originalRng + 4,RngY.Column + 2 ).PasteValues
            End With

            Worksheets("TSX-DeltaFind").Activate
        Next
    End With
End Sub

【问题讨论】:

  • 如果所有这些变量都是数字,则粘贴目标相当于Range(2, 3:5,3 ),这是无效的语法。我想你需要Cells

标签: excel vba syntax copy-paste


【解决方案1】:

对于 A) 你的范围参数应该类似于 range("a2:b2") 而不是 range(1,2:2,2)

您可以使用 Cells 以您尝试的方式引用它们。例如

Worksheets("TSX-CleanDate").Range(BottomRow2 + 1, RngY.Column + 2:originalRng + 4,RngY.Column + 2 ).PasteValues

可能

Worksheets("TSX-CleanDate").Range(Cells(BottomRow2 + 1, RngY.Column + 2),Cells(originalRng + 4,RngY.Column + 2)).PasteSpecial (xlPasteValues)

B) 对于重复项,使用 range.removeduplicates

【讨论】:

  • 你给我的新行返回错误“对象不支持此属性或方法”
  • Pastevalues 语法无效。您还应该使用工作表限定所有单元格。
  • 您能解释一下吗?我对此很陌生...我将“pastevalues”更改为“paste”仍然没有运气。
  • 添加了正确的粘贴方法。您已经使用了 With ThisWorkbook.Worksheets("TSX-CleanDate"),为什么要输入 4 次?
  • 我只是想看看这个错误是否与页面引用有关,这更像是一个安全检查。
猜你喜欢
  • 2013-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-29
  • 2018-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多