0

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

4

3 回答 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 回答