设置VBA中Copy()方法返回的Range对象



我在Excel 2003中使用宏对过滤列表范围使用了Copy()方法,我想获取返回的范围并计算行(因此我可以检查我复制了多个行)。然而,我得到一个'Object required'错误。

我被微软网站上的VBA参考告知Copy()方法返回一个范围对象。然而,从代码来看,情况似乎并非如此。请建议!

谢谢。

For J = 1 To .ListObjects.Count
    ' Filter
    .ListObjects(J).Range.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=CritRange
    Set CopiedRange = .ListObjects(J).Range.Copy ' Object required error
    If CopiedRange.Rows.Count > 1 Then
    {etc...}

Excel在Copy()操作中不返回范围对象。我试着在复制之前测试行数的范围,但这没有考虑到特别是对于可见的行。因此,我需要编写一个新函数:

Function CountVisibleRows(rg As Range)
    Dim NumRows As Integer
    ' Count visible cells in the first column, minus one to account for the header
    NumRows = rg.Columns(1).SpecialCells(xlCellTypeVisible).Count - 1
    CountVisibleRows = NumRows
End Function

然后在复制之前在范围上进行测试,并确定要复制的行数(因为Copy()方法默认只复制可见的行)。

最新更新