是否从VBA中的Copy()方法设置返回的范围对象?
我在Excel 2003中使用宏对筛选的列表区域使用了Copy()方法,我想获取返回的区域并计算行数(这样我可以检查我是否复制了多行。但是我得到了一个“Object required”错误 微软网站上的VBA引用告诉我,Copy()方法返回一个range对象。但是从代码来看,情况似乎并非如此。请给出建议 谢谢是否从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:=
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()方法默认情况下只复制可见行).如果这是您接受的答案,您应该将其作为答案发布,并将其标记为已解决。这样,像我这样的其他人就会知道您的问题已解决。我知道,我不能,因为当时我是一名新成员。