我正在尝试我认为会是相当简单的vba语句来测试命名范围是否作用于工作簿或特定工作表。Progammatically确定命名范围是否作用于工作簿
作为测试,我创建了一个新的Excel文档并添加了6个命名范围。这里是他们是如何在名经理奠定了:
Name | Refers To | Scope
-------------+----------------------+-----------
rng_Local01 | =Sheet1!$A$2:$A$16 | Sheet1
rng_Local02 | =Sheet1!$C$2:$C$16 | Sheet1
rng_Local03 | =Sheet1!$E$2:$E$16 | Sheet1
rng_Global01 | =Sheet1!$B$2:$B$16 | Workbook
rng_Global02 | =Sheet1!$D$2:$D$16 | Workbook
rng_Global03 | =Sheet1!$F$2:$F$16 | Workbook
我预计运行:
For i = 1 To ThisWorkbook.Names.Count
If ThisWorkbook.Names(i).WorkbookParameter Then Debug.Print ThisWorkbook.Names(i).Name
Next i
会导致三个Workbook
范围的命名范围记录,然而,没有任何反应。没有错误。 .Names(i).WorkbookParameter
评估为False
对所有的命名范围,我不知道为什么。
通过我碰到ValidWorkbookParameter
它看起来像只读表妹WorkbookParameter
传来VBA帮助Name
对象看,但是使用方法不作任何区别。
我也试图明确设置ThisWorkbook.Names(i).WorkbookParameter = True
,但是这将导致一个错误:
"Invalid procedure call or argument"
尽管WorkbookParameter
被列为是事实读/写
任何人都了解任何事情为什么这不起作用,因为我也期待它呢?我误解了Name.WorkbookParameter
应该如何工作?任何人都可以得到这个成功运行?
感谢非常有用的解决方案家伙......我仍然好奇VBA中'Name'对象的'WorkbookParameter'和'ValidWorkbookParameter'属性的行为。在我看来,这些属性不像*所宣称的那样工作*。 – 2011-12-28 15:32:17
不确定WorkbookParameter是什么,但怀疑它是用于Sharepoint中的Excel Services而不是客户端Excel – 2011-12-29 00:21:50