Tag: 多态性

Excel VBA:为什么“表格”集合不是“集合”?

Excel VBA上的一个简单问题:如果“Sheets”对象是一个集合,为什么下面的语句返回false? (在Inmediate面板中input) debug.print TypeOf Sheets Is Collection Falso 我发现它是因为我做了一个以Collection为参数的函数。 该函数与我声明为Collection的variables一起工作,但不适用于其他集合(如Sheets集合)。 也许VBA在inheritance和/或多态性方面失败了? 编辑 :正如JosieP和Mehow所解释的,Sheets集合不是从Collection类/接口inheritance的,所以它不是Collection,不能作为Collection使用多态。 所以现在的问题是:为什么Sheets不是Collection的子类? 为什么他们没有inheritance收集? 考虑到已经在Sheets中实现的方法/属性,它应该是小菜一碟。 正如我所看到的,Collection类/接口只需要4个方法: Add Count Item Remove 而Sheets已经实现了4个类似的方法/属性: Add Count Item Delete 所以映射将是微不足道的。 他们可以很容易地将Sheets集合转换为Collection。 编辑2 :我多谢MS的build议,但是我不会这样做,因为他们可能会说“这不是一个devise错误,它是一个function”:)。 更多思考的食物:在新的工作簿中运行以下代码: Sheets.Add.name = "sh2" Sheets.Add.name = "sh3" Dim col As Collection Set col = New Collection col.Add Sheets(1) col.Add Sheets(2) col.Add Sheets(3) For Each […]

VBA是一种OOP语言吗?它支持多态吗?

我正在做我的第一个VBA项目。 (来自C ++ ) 我想通过实现类和多态来改进现有的Microsoft Excel工作簿使用的VBA项目。 我的问题是: 1 –我读了很多文章/论坛,解释说VBA不是面向对象编程( OOP )语言,不支持多态。 其中一些人提出了使用关键字实现的解决方法。 2 –我还发现了一些这样的网页,它解释了如何在VBA中使用关键字(如Inherits , Override , Overridable , MustOverrides)执行OOP和多态。 所以我的问题是: VBA是一种OOP语言吗?它支持多态吗?