我有一个名为“MyRange”的命名范围。它定义为='Sheet1'!$A:$A
。在 VBA 中,我有公式LastRow= Cells(Rows.Count, Range("MyRange").Column).End(xlUp).Row
。它应该返回命名范围中数据的最后一行。但是,它会返回我当前所在的任何工作表的 A 列中的最后一行。为什么从命名范围中删除工作表引用以及如何使其保持原位?
问问题
575 次
3 回答
2
您的代码的语法是这样的,对于 Cells 参数和 Rows 参数,它将引用活动工作表而不是命名范围中的工作表。
维护工作表引用的语法可能是:
With Range("myrange").Worksheet
LastRow = .Cells(.Rows.Count, [myrange].Column).End(xlUp).Row
End With
注意单元格和行(和列)前面的“点”。
于 2014-06-18T19:34:35.660 回答
1
尝试使用这个:
LastRow = range("MyRange").Worksheet.Cells(Rows.Count, Range("MyRange").Column).End(xlUp).Row
编辑与另一个答案相同的方法:) 花了太长时间来完成答案!
它失败的原因是 CELLS 默认引用当前活动工作表。在 CELLS 之前添加 Range("MyRange").Worksheet 会导致它对包含“MyRange”的工作表进行操作。
于 2014-06-18T20:03:42.947 回答
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
于 2014-06-18T18:55:33.827 回答