例如,只需使用" New"即可创建字典对象。关键字:
Role
但"排序"需要使用工作表属性添加类:
Dim dic as Scripting.Dictionary
Set dic = New Scripting.Dictionary
当使用新关键字尝试在上面的示例中错误地实例化srt对象时,Intellisense不会将Excel.Sort显示为选项,这也很有趣。但是,如果使用新关键字错误地实例化新工作簿对象,则Intellisense会将Excel.Workbook显示为选项。
答案 0 :(得分:2)
该术语称为"noncreatable"
。这是您可以添加到coclass
。
[ coclass-attribute-list, noncreatable ] coclass coclass-name { coclass-interface-list }
正如上面提到的文档所述,它用于创建无法使用CreateInstance()
或CoCreateInstance()
自行实例化的COM类(在VBA中,这转换为CreateObject()
,调用这两个函数之一)。但您仍然可以获得对现有COM对象的引用,如上所示:
Set srt = Activesheet.sort
答案 1 :(得分:2)
我记得,这个词是PublicNotCreatable
。
这是一个很好的链接:http://www.cpearson.com/excel/classes.aspx(请参阅“类的实例化属性”一节)。
如果您已经创建了一个类模块,那么在“属性”窗口中,您可以将实例化从Private
(默认值)更改为PublicNotCreatable
,您将获得此行为。
通常,您在另一个类上提供工厂方法,允许您的库用户在受控环境下创建这些类的实例。或者当然,如果这就是你想要的,你可以阻止你的图书馆用户创建它们。