Vba 在工作簿中指定范围而不指定工作表

Vba 在工作簿中指定范围而不指定工作表,vba,excel,Vba,Excel,如果我想在Excel VBA中引用活动工作簿中的某个范围,我可以说“With range(“Myrange”)”。我不需要表名 有时我想在另一个工作簿中引用一个范围。“使用MyWorkbook.Range(“Myrange”)”不起作用,因为我必须指定该范围所在的工作表 是否有任何方法可以引用工作簿中的范围,而不必说明该范围在哪个工作表中?是的,在工作簿中创建一个命名范围(例如:MyRangeName)。然后在代码中使用范围(“MyRangeName”),无论您正在查看哪个工作簿,它都会引用该工

如果我想在Excel VBA中引用活动工作簿中的某个范围,我可以说“With range(“Myrange”)”。我不需要表名

有时我想在另一个工作簿中引用一个范围。“使用MyWorkbook.Range(“Myrange”)”不起作用,因为我必须指定该范围所在的工作表


是否有任何方法可以引用工作簿中的范围,而不必说明该范围在哪个工作表中?

是的,在工作簿中创建一个命名范围(例如:
MyRangeName
)。然后在代码中使用
范围(“MyRangeName”)
,无论您正在查看哪个工作簿,它都会引用该工作表上的单元格。

如果您创建一个命名范围并将其限定到工作簿,则可以使用以下方法在任何工作簿中获取命名范围。如果找不到名称,显然会出现错误

wb.Names("Myrange").RefersToRange

MyWorkbook或ThisWorkBook.ActiveSheet?否,除非您指的是该工作簿中处于活动状态的工作表,在这种情况下,工作簿具有
ActiveSheet
属性。(否则代码怎么可能知道您指的是哪个范围呢?)Alex和Rory,Excel必须知道如何查找范围,因为如果我在工作簿中任何工作表的单元格中键入“=MyRange”,即使MyRange所在的工作表未处于活动状态,Excel也可以查找范围值。只需打开两个工作簿,两个工作簿都有一个名为“MyRange”的范围,然后尝试此操作即可,每次都是对的。谢谢Sobigen,谢谢FreeMan,但是如果我打开了两个工作簿,并且每个工作簿中定义了相同的范围名称,那么VBA将失败,因为它不知道使用哪个工作簿。