Excel VBA工作表名称 vs 工作表范围

3

我在工作表上创建了一个名为bob的定义名称/范围,指向单个单元格。在该工作表上还设置了许多其他的命名区域,这些命名区域都能正常使用,除了我的。

我应该可以通过以下语句之一来引用此单元格的内容:

(worksheet object).Names("bob").RefersToRange.Value
(worksheet object).Range("bob").Value

然而,仅对于引用Range的第二个语句才有效。第一个语句无法在Names列表中找到该名称。

我的问题是:

  1. NameRange之间有何区别(如果有)?
  2. 这是否与我的名称/范围的全局/本地范围有关?
  3. 如何在工作表上创建其他名称/范围,以使它们出现在NameRange列表中?
2个回答

9
是的,你说得对。 名称可以是本地的(属于工作表)和全局的(属于工作簿)。 (工作表对象).Names("bob") 只会找到一个本地名称。你的名称显然是全局的,所以你可以通过 (工作表对象).Workbook.Names("bob").RefersToRange 访问它。
“其他名称”可能是本地的。只有当它们的父表处于活动状态时,它们才会出现在范围列表中(请检查一下)。要创建一个本地名称,请在工作表名称之前加上感叹号: '我的表格名称'!bob

谢谢GSerg :). 这就是我一直找不到的东西,如何创建本地名称以便比较行为差异。 - cOrOllArY
应该是 (工作表对象).Names("bob").RefersToRange,哈哈 ;) - Mathieu Guindon
@MathieuGuindon 应该这样吗? ;) 我特别指的是 Workbook.NamesWorksheet.Names 之间的区别。 - GSerg
是的。{Workbook object}.Names{WorksheetObject}.Names - {Workbook object} 没有 Workbook 属性!哦,等等,我是不是看错了,.Workbook 是父级吗?别理我哈哈 - Mathieu Guindon
@MathieuGuindon 是的,它是父级 ;) - GSerg

1

我不知道如何用代码实现,但是如果你在Excel 2007的Ribbon中的公式选项卡组下找到名称管理器,你可以创建名称并选择它们的范围。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接