Excel VBA worksheet.names vs worksheet.range

cOr*_*ArY 3 excel vba range

我在一个名为的工作表上创建了一个已定义的名称/范围bob,指向一个单元格.此工作表上还设置了许多其他名称/范围,我没有创建.除了我的以外,所有数量/范围都能很好地工作.

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

(worksheet object).Names("bob").RefersToRange.Value
(worksheet object).Range("bob").Value
Run Code Online (Sandbox Code Playgroud)

但是,只有第二个声明,Range由于某种原因指的是作品.第一个在Names列表中找不到名称.

我的问题是:

  1. a Name和a 之间有什么区别Range
  2. 这与我的名字/范围的全球/本地范围有关吗?
  3. 如何在工作表上创建其他名称/范围,以便它们出现在工作表NameRange列表中?

GSe*_*erg 9

是的,你是对的.名称可以是本地(属于工作表)和全局(属于工作簿).

(worksheet object).Names("bob")只会找到一个本地名称.你的名字显然是全球性的,所以你可以像访问它一样(worksheet object).Workbook.Names("bob").RefersToRange.

"其他名字"可能是本地的.它们仅在父表单处于活动状态时出现在范围列表中(检查出来).要创建本地名称,请在其前面加上工作表名称,以"!"分隔: 'My Sheet Name'!bob.