【问题标题】:Specifying a range within a workbook without specifying the sheet在工作簿中指定范围而不指定工作表
【发布时间】:2015-05-29 23:29:13
【问题描述】:

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

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

有没有什么方法可以引用工作簿中的范围而不必说该范围在哪个工作表中?

【问题讨论】:

  • MyWorkbook 或 ThisWorkBook.ActiveSheet ?
  • 否,除非您指的是该工作簿中的活动工作表,在这种情况下,该工作簿具有 ActiveSheet 属性。 (代码怎么可能知道你指的是哪个范围?)
  • Alex 和 Rory,Excel 必须知道如何查找范围,因为如果我在工作簿的任何工作表的单元格中键入“=MyRange”,Excel 可以找到范围值,即使工作表MyRange 居住在未激活状态。

标签: vba excel


【解决方案1】:

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

wb.Names("Myrange").RefersToRange

【讨论】:

  • 刚刚在打开两个工作簿的情况下尝试了这个,两个工作簿都有一个名为“MyRange”的范围,并且每次都得到正确的。谢谢 Sobigen。
【解决方案2】:

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

【讨论】:

  • 谢谢 FreeMan,但如果我打开了两个工作簿,每个工作簿中定义了相同的范围名称,VBA 将失败,并显示“对象 '_Global' 的方法 'Range' 失败”,因为它不知道使用哪一个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多