Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否从VBA中的Copy()方法设置返回的范围对象?_Vba_Excel 2003 - Fatal编程技术网

是否从VBA中的Copy()方法设置返回的范围对象?

是否从VBA中的Copy()方法设置返回的范围对象?,vba,excel-2003,Vba,Excel 2003,我在Excel 2003中使用宏对筛选的列表区域使用了Copy()方法,我想获取返回的区域并计算行数(这样我可以检查我是否复制了多行。但是我得到了一个“Object required”错误 微软网站上的VBA引用告诉我,Copy()方法返回一个range对象。但是从代码来看,情况似乎并非如此。请给出建议 谢谢 For J = 1 To .ListObjects.Count ' Filter .ListObjects(J).Range.AdvancedFilter Action:=

我在Excel 2003中使用宏对筛选的列表区域使用了Copy()方法,我想获取返回的区域并计算行数(这样我可以检查我是否复制了多行。但是我得到了一个“Object required”错误

微软网站上的VBA引用告诉我,Copy()方法返回一个range对象。但是从代码来看,情况似乎并非如此。请给出建议

谢谢

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()操作中返回range对象。在复制它之前,我尝试测试行数的范围,但如果不考虑,尤其是只对可见行,则无法工作。因此,我需要编写一个新函数:

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()方法默认情况下只复制可见行).

如果这是您接受的答案,您应该将其作为答案发布,并将其标记为已解决。这样,像我这样的其他人就会知道您的问题已解决。我知道,我不能,因为当时我是一名新成员。