我的问题
假设我在xxx
(工作簿范围)中有一个命名区域(Workbook1
说),它指的是动态确定的区域,如:
=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),1)
现在我想在VBA
:
Sub t()
Debug.Print Range("xxx").Address
End Sub
这就像一个魅力。但是,当我现在更改活动工作簿(例如通过添加新工作簿)时,上面的行将失败:
Sub t()
Workbooks.Add
Debug.Print Range("xxx").Address
End Sub
我的解决方法
我现在的解决方法是重新激活ThisWorkbook
:
Sub t()
Workbooks.Add
ThisWorkbook.Activate
Debug.Print Range("xxx").Address
End Sub
我的问题
这是实现这一目标的唯一方法吗?我试图通过ThisWorkbook.Names("xxx").RefersToRange
访问范围,但这也不起作用,因为范围是动态确定的。不幸的是,没有像ThisWorkbook.Range("xxx")
那样的东西。
所以简而言之:无论目前的焦点如何,我如何引用全局命名的动态范围?是将范围从Workbook
更改为Worksheet
的唯一方法吗?
答案 0 :(得分:1)
即使xxx
在工作簿范围内,您也可以在工作表范围内访问它。
Debug.Print ThisWorkbook.ActiveSheet.Range("xxx").Address
这仅适用于偏移量指向的工作表(此处为sheet1)。
如果你只是用它来查找A列的使用范围,那么我建议只用VBA轻松解决这个问题:
Debug.Print Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).Address