尝试复制到变量单元格时出现运行时错误 - 如果我使用 .End(xlUp) 它会起作用,为什么 .End(xlRight) 是一个问题?

问题描述 投票:0回答:1

我有多个报告正在提取相同的数据。我试图通过在该数据的第一次迭代结束时复制标识符来标记这些重复项。目前我的代码如下:

        Set OppID = OwnerName.Offset(0, -3)
        Set CurrentWS = Worksheets(OwnerName.Value)
        Set OppIDField = CurrentWS.Range("C1", Range("C1").End(xlDown))
        
        IDCount = WorksheetFunction.CountIf(OppIDField, OppID)
        
        If IDCount > 0 Then
            
            Set Existing = OppIDField.Find(OppID)
            Debug.Print Existing.Address
        
            
            OwnerName.Offset(0, -5).Copy Destination:=Worksheets(OwnerName.Value).Range(Existing.Address).End(xlRight).Offset(0, 1)

按原样运行代码会在“复制”部分出现运行时错误。

如果我将“xlRight”更改为“xlUp”,它会将正确的数据复制到错误的位置,但它至少不会遇到运行时错误并会完成宏。

偏移量是将其放入上一个有数据的单元格的下一个单元格中。 xlRight 会导致 xlUp 不会导致的错误是否有原因?

excel vba
1个回答
0
投票

XlDirection
End
方法的参数)值必须是以下之一:
xlDown
xlToLeft
xlToRight
xlUp
End(xlRight)
导致运行时错误 (1004)。

微软文档:

XlDirection 枚举(Excel)

如果变量

Existing
引用该行中最后使用的单元格,则 End(xlToRight) 将到达该行中的最后一列。使用 Offset(0, 1) 将超出纸张限制,这也会导致运行时错误 (1004)。

微软文档:

Range.End 属性 (Excel)

尝试使用 End(xlToLeft) 定位目标单元格。如果这与您的预期输出不符,请分享所需的单元格位置。

With Worksheets(OwnerName.Value)
    OwnerName.Offset(0, -5).Copy Destination:=.Cells(Existing.Row, .Columns.Count).End(xlToLeft).Offset(0, 1)
End With
© www.soinside.com 2019 - 2024. All rights reserved.