VBA命名范围下落参考

我有一个名为“MyRange”的命名范围。 它被定义为='Sheet1'!$A:$A 在VBA中,我有公式LastRow= Cells(Rows.Count, Range("MyRange").Column).End(xlUp).Row 。 它应该返回名称范围中的数据的最后一行。 但是,它将返回当前所在表格的A列中的最后一行。 为什么表单引用被从命名的范围中删除,我怎样才能保留它?

尝试使用这个:

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

编辑同样的方法作为另一个答案:)花太久完成答案!

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

你的代码的语法是这样的:对于Cells参数和Rows参数,它将引用活动表单而不是指定范围中的表单。

维护工作表参考的语法可以是:

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

注意单元格前面的“点”,以及行(和列)。

你可以随时尝试:

 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