VBA命名范围下降表参考

时间:2014-06-18 18:39:18

标签: excel vba excel-vba excel-2010 named-ranges

我有一个名为“MyRange”的命名范围。它被定义为='Sheet1'!$A:$A。在VBA中,我有公式LastRow= Cells(Rows.Count, Range("MyRange").Column).End(xlUp).Row。它应返回包含命名范围中数据的最后一行。但是,它返回我当前所在的任何工作表的A列的最后一行。为什么表单引用从命名范围中删除,如何使其保留到位?

3 个答案:

答案 0 :(得分:2)

您的代码的语法是这样的,对于Cells参数和Rows参数,它将引用活动工作表而不是命名范围中的工作表。

维护工作表引用的语法可以是:

With Range("myrange").Worksheet
    LastRow = .Cells(.Rows.Count, [myrange].Column).End(xlUp).Row
End With

注意" dot"在单元格和行(和列)前面。

答案 1 :(得分:1)

尝试使用:

LastRow = range("MyRange").Worksheet.Cells(Rows.Count, Range("MyRange").Column).End(xlUp).Row

编辑与另一个答案相同的方法:)花了太长时间才能完成答案!

失败的原因是CELLS默认引用当前活动工作表。添加范围(“MyRange”)。CELLS之前的工作表使其在工作表上操作“MyRange”包含在其中。

答案 2 :(得分:0)

您可以随时尝试:

With Sheet1
    LastRow = Cells(Rows.Count, Range("MyRange").Column).End(xlUp).Row
End With

另一种想法:尝试没有""在MyRange附近

LastRow= Cells(Rows.Count, Range(MyRange).Column).End(xlUp).Row