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